【问题标题】:Question about the Intel's IA-32 software developer manual关于英特尔 IA-32 软件开发人员手册的问题
【发布时间】:2010-04-19 06:42:32
【问题描述】:

我正在研究英特尔的 IA-32 软件开发人员手册。特别是,我正在阅读以下手册:http://www.intel.com/Assets/PDF/manual/253666.pdf。让我们以 ADD 指令为例。在第 79 页上写道,您可以将 r8(8 位寄存器)添加到 r/m8(8 位寄存器或内存位置)。下面几行,还写着可以将r/m8添加到r8。问题是:如果我添加两个 8 位寄存器,我使用的是哪条指令?谢谢。

【问题讨论】:

  • 我已将您问题标题中的“怀疑”更改为“问题”。显然,有些语言对英文单词“doubt”和“question”使用相同的词;在这里,“问题”几乎总是你想要的词。

标签: assembly intel x86


【解决方案1】:

add 指令有多个版本...相同的助记符可以编码为不同的操作码,具体取决于您使用的操作数。 (并回答您的具体问题:“add r8,r8”指令可能有 2 种不同的可能编码,它们做同样的事情)

【讨论】:

  • 类似重载函数?
【解决方案2】:

ADD 指令有 9 种不同的编码类型,两个操作码保留用于:

Opcode: 00/r = ADD r/m8, r8
Opcode: 02/r = ADD r8, r/m8

如果 "ADD r8, r8" 都有一定的效果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-21
    • 2014-08-02
    • 2018-09-25
    • 2021-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-16
    相关资源
    最近更新 更多