【发布时间】:2014-08-09 08:01:14
【问题描述】:
我commonly refer to 用于 x86 文档的一个站点有一些带有斜线和数字的指令代码。例如,jmp 接近绝对间接给出FF /4,而jmp 远绝对间接给出FF /5。
/4 和 /5 是什么意思?
为了运行一个快速的小测试,我附加了一个 32 位进程,分配了一些内存,并让汇编程序插入 jmp dword ptr[0x12345678];生成的字节码是FF 25 78563412。我了解地址字节序,但25 与/4 或/5 有什么关系?
我的猜测是我生成了一个jmp far,/5 意味着有五个字节作为参数(4 个字节用于地址 + 1 个字节用于25)。我仍然对25 的来源感到困惑。
【问题讨论】:
-
4 或 5 是指令第二个字节 (modrm) 中 3 位字段的值。
-
您应该参考英特尔官方文档。正如伊戈尔所引用的那样,甚至有解释,而且它也是官方的;)
-
@Jester 我认为官方英特尔文档中没有快速答案,它可能存在于大量解释中,但不值得花那么多时间去查找。因此,堆栈溢出是有好处的。对于初学者或只想要特定答案的人来说,查找所有文档没有多大意义。有时人们也需要一点指导/帮助,你不能给人们一个 500 页的文档并告诉他们只搜索一个问题,如果问其他人花费的时间要少得多
标签: assembly x86 machine-code opcode