汇编指令转机器码

在这里插入图片描述

指令前缀

地址大小与操作数的补充

  • 8086CPU 有一个状态位决定操作数是 16 位还是 32 位。通过汇编和链接,设置改状态位为 1,则说明是 32 位操作数,否则是 16 位操作数。

  • 使用前缀 0x66 来改变操作数的大小。

    机器码:40
    在 16 位中表示:inc ax
    添加前缀后的机器码:66 40
    在 32 位中表示:inc eax
    

    在 16 位模式中使用前缀,则会修改为 32 位,若在 32 位模式中使用前缀,则会修改为 16 位,具有反转当前默认操作数大小的作用。

寄存器-寄存器/存储器模式(mod-reg-r/m)

mod-reg-r/m 字节对不同的指令有不同的使用。

三个域:

  • 两位的 mod 域
  • 三位的 reg 域
  • 三位的 r/m 域
reg 域

操作码域本身已经有许多的指令,例如在 16 位模式中,机器码 40 对应操作为 inc ax,机器码只有一个字节,这很方便。

若是需要其它的例如 add、or、adc、sbb、and、sub、xor、cmp 等指令,它们后面都有一个在寄存器或存储器中的字节长的操作数和一个立即数,每条指令使用的操作码都为 80。那么选择这些指令中的哪一个便由 mod-reg-r/m 字节的 reg 域来决定了。

reg 域要满足:有且仅有一个操作数为寄存器或存储器,另外一个操作数必须是立即数。

对于操作码 80(这只是 12 个操作码中的一个),对应 reg 域为:

在这里插入图片描述

每一对操作数,若都不是立即数,则 8086 要求至少有一个操作数是寄存器。reg 域包含了该寄存器的编码。

在这里插入图片描述

mod 域

作用:确定操作数的类型。

通常,我们的指令类型:

  • 两个操作数都是寄存器。
  • 有一个操作数是寄存器,另一个操作数是存储器。

mod = 11: 表示该指令是一个寄存器到寄存器的操作,或一个立即数到寄存器的操作。

寄存器到寄存器:

  • 目的寄存器在 reg 域中编码,而源寄存器在 r/m 域中编码。
  • 使用者两个寄存器的编码如表 9-3 所示。

立即数到寄存器:

  • 操作的编码如表 9-2 所示,目的寄存器在 r/m 域中编码。

若 mod 为其它值,则编码情况更复杂,它即取决于 mod 域又取决于 r/m 域。若 r/m = 100,则它还依赖于变址基址字节(SIB)。

SIB 域

SIB 字节由三个域组成:

  • 一个两位的比例域
  • 一个三位的变址寄存器域
  • 一个三位的基址寄存器域

在这里插入图片描述
在这里插入图片描述

比例因子可在变址寄存器中写成整数形式。

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
将ARM汇编指令换为机器码是将人类可读的汇编指令翻译成机器可执行的二进制码的过程。由于机器码是计算机硬件能够直接理解的指令形式,所以在执行指令时,计算机需要将汇编指令换为机器码。下面是一种简单的方法将ARM汇编指令换为机器码。 首先,需要根据ARM指令的格式和规范理解每个指令的含义和操作码。ARM指令由32位组成,其中包含操作码、操作数和其他参数。 其次,根据具体指令的格式,将每个部分换为对应的二进制表示形式。例如,操作码通常表示为特定的二进制位模式。 然后,根据指令的不同寻找对应的编码方式。不同的指令有不同的编码方式,例如立即数、寄存器和内存地址等等。根据具体的指令要求和参数,换相应的部分。 最后,将所有部分组合成一个32位的二进制序列,这就是换后的机器码换后的机器码可以被计算机硬件直接识别和执行。 需要注意的是,ARM汇编指令换为机器码的过程需要具备一定的知识和经验。对于复杂的指令或有特殊要求的指令,可能需要查阅相关的ARM体系结构手册或其他资料来获得准确的换方式。此外,在换过程中还应该注意指令的字节顺序(即大端序或小端序)以及特殊的对齐要求。 总之,将ARM汇编指令换为机器码是一项需要仔细思考和操作的任务。掌握适当的知识和技巧可以帮助我们完成这个过程,以便更好地理解和使用ARM指令集。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值