实际的机器代码在各个方面是什么样子的? [关闭]

2023-11-24

关于机器代码到底是什么似乎有很多观点。我听有人说它是汇编、二进制或十六进制。

机器代码本质上是特定处理器的一组指令是否正确?如果是这样,我想这些可以用二进制或十六进制表示法或汇编来表示。但是未翻译的“实际”机器代码是什么样的呢?是基于架构的字长吗?或者十六进制是否是所有意图和目的的默认表示形式?

坐在硬盘上时是什么样子?坐在收银台上会是什么样子?那么当它被处理时,它只是当时的一组电压变化吗?


机器代码只是与特定处理器架构的 CPU 指令相对应的二进制数据。

我不会过多讨论它是如何存储的,因为这取决于它存储的位置。例如,在磁盘上,它通常存储为一系列磁化区域。机器码在存储方面与其他二进制数据没有什么不同。如果您的问题更多是关于数据如何在计算机上存储,您应该研究计算机中的各种数据存储设备,例如 HDD、RAM 和寄存器等。

可视化机器代码存储方式的最简单方法是在十六进制编辑器中查看一些代码。这显示了由十六进制数字表示的二进制数据。例如,采取指令:

0xEB 0xFE

这可以很容易地写成 1110101111111110 或 60414。这取决于您希望如何将二进制转换为人类可读的形式。

该指令代表无限循环。 (这是假设它在 x86 CPU 上运行。其他 CPU 可以按照自己的意愿解释它。)它可以像这样在汇编中编码:

j:
jmp j

当您运行汇编器时,它会将上面的代码转换为上面的二进制机器代码。

该指令实际上分为两部分。第一个是所谓的操作码,是0xEB。当这段代码进入CPU时,意味着:从程序中读取一个字节,并跳过那么多字节的数据。然后CPU读取该字节0xFE。由于它需要一个有符号整数,因此它将二进制数据解释为数字 -2。指令读取完毕,指令指针向前移动 2 个字节。然后执行该指令,导致指令指针向前移动 -2 (0xFE) 个字节,这实际上将指令指针设置为与指令启动时相同的值。

我希望这回答了你的问题。如果您想了解 CPU 的内部工作原理,请阅读微代码和电子逻辑门。基本上,它是一堆电压差,例如 1 位表示 5 伏电荷,0 位表示 0 位电荷。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

实际的机器代码在各个方面是什么样子的? [关闭] 的相关文章

随机推荐

  • 获取维恩图中的项目列表

    使用以下代码很容易绘制维恩图 library VennDiagram set seed 1 For reproducibility of results xx 1 lt list A sample LETTERS 15 B sample L
  • 通过 IP 访问 IISExpress 以获取 ASP.NET Core API

    我有一个在 IIS Express 上运行的 asp net core 项目 网址 http 本地主机 53142 and https 本地主机 44374 如果我在浏览器中输入本地主机 则可以工作 但是 如果我输入我的 IPv4 IP 地
  • mysql - 查询三个表

    我有一个包含三个表的关系数据库 第一个包含与第二个相关的 id 第二个包含与第三个相关的 id 第三个包含我想要的结果 是否可以使用单个查询来查询第一个表中的 id 该 id 给出了第三个表中与之相关的所有结果 抱歉 我是 mySQL 新手
  • CompletableFuture 和垃圾收集

    我想触发许多一次性异步 CompletableFutures 如下所示 for Job job jobs CompletableFuture supplyAsync gt job process whenComplete this doSo
  • ASMX Web 服务未序列化抽象基类

    我有一个抽象类 我们称之为生命体 它看起来像 public abstract class Lifeform public virtual int Legs get set public virtual int Arms get set pu
  • 如何在Bigcommerce中通过sku id更新产品的“inventory_level”?

    我正在尝试更新产品的库存水平 但不幸的是没有成功 这是我的代码 我想更新产品的 inventory level 但可以这样做
  • 多个远程数据库,单个本地数据库(花式复制)

    我有一个管理用户的 PouchDB 应用程序 用户拥有一个使用单个 CouchDB 数据库进行复制的本地 PouchDB 实例 很简单 这就是事情变得有点复杂的地方 我正在将 组 的概念引入到我的设计中 组将是不同的 CouchDB 数据库
  • 接口和抽象类有什么区别? [复制]

    这个问题在这里已经有答案了 可能的重复 接口与抽象类 一般 OO 我不太清楚其中的区别 Thanks 它们非常相似 但存在一些重要的技术差异 抽象类允许您为某些方法提供默认实现 但接口不允许您提供任何实现 你可以实现多个接口 但只能继承一个
  • 如何制作像谷歌地图应用程序一样的滑动面板?

    我正在寻找类似的东西Android滑动面板对于 iOS 我发现MBP下拉控制器 但它需要使用两个 ViewController 并且需要对我正在实现的应用程序的架构进行重大更改 我只想要在现有视图控制器中添加子视图的东西 我该怎么做呢 我在
  • 递归函数不返回任何内容? [复制]

    这个问题在这里已经有答案了 我编写了以下函数来实现我自己的二分搜索 def bisect input target mid len input 2 if len input 1 if input 0 target return 1 else
  • Python - 在每一行的不同位置对数组进行切片

    我有一个 2D python 数组 我想以一种奇怪的方式对其进行切片 我想要一个恒定宽度的切片 从每行的不同位置开始 如果可能的话 我想以矢量化的方式做到这一点 例如我有数组A np array range 5 range 5 看起来像 a
  • 在 Java 中,给定一个 IP 地址范围,返回覆盖该范围的 CIDR 块的最小列表

    我在将 IP 地址范围转换为 CIDR 块列表时遇到一些逻辑问题 我确实相信这个网站做得对 http ip2cidr com 我想传入一个起始 IP 地址和一个结束 IP 地址 并让 java 吐出所需的 CIDR 块的最小列表 以仅覆盖传
  • 如何防止 Cassandra 提交日志填满磁盘空间

    我正在 AWS 上运行一个两节点 Datastax AMI 集群 昨天 卡桑德拉开始拒绝一切事物的连接 系统日志没有显示任何内容 之后lot在修补过程中 我发现提交日志已填满分配的安装上的所有磁盘空间 这似乎导致连接拒绝 删除了一些提交日志
  • 如何使用 mod_proxy 保留通过 AJP 连接器发送到 Apache 的 Tomcat HTTP 响应的 Content-Type 标头

    我遇到了 HTTP 响应不正确的问题Content Type通过 AJP 1 3 连接器访问 Apache 后面的 Tomcat 中托管的 Axis2 Web 服务时 会使用此标头 我可以通过其 RESTful 接口在浏览器中毫无问题地访问
  • 如何在窗口形式的datagridview单元格中放置自定义控件

    我正在开发一个窗口窗体应用程序 我需要在数据网格视图的单元格中放置由两个标签组成的自定义控件 我已经创建了自定义控件 指导我使用自定义控件填充单元格 我认为您想创建自己的编辑控件来实现 IDataGridViewEditingControl
  • 将列表的元素转换为二进制

    假设我有一个列表 lst 0 1 0 0 我怎样才能让python将此列表解释为二进制数0100 以便2 0100 给我01000 我能想到的唯一方法是首先创建一个函数 将 二进制 元素转换为相应的整数 以 10 为基数 然后使用 bin
  • Spring Security NoClassDefFoundError 错误

    从事 Spring 项目并正在学习使用 Spring Security 该项目正在发挥作用 但突然决定不这样做 谁能解释一下为什么 WebInit java package com catalyst Config import javax
  • Redis批量插入

    我正在考虑使用 Redis 协议进行批量插入 如下所述 http redis io topics mass insert在我忙于编写代码来处理这个问题之前 我只想确保我清楚 Redis 需要什么来完成这项工作 上面的链接建议 要使用批量插入
  • 如何处理返回除 ViewResult 之外的结果的操作的授权?

    我在 ASP NET MVC 控制器上使用自定义授权过滤器 如果用户在特定操作上授权失败 该过滤器会将用户重定向到登录屏幕以外的 URL 这对于返回视图的操作来说是可以的 但是我的许多操作返回其他结果类型 例如 PartialResult
  • 实际的机器代码在各个方面是什么样子的? [关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 关于机器代码到底是什么似乎有很多观点 我听有人说它是汇编 二进制或十六进制 机器代码本质