对于x86文档,我commonly refer to的一个站点有一些带有斜杠和数字的指令代码。例如,jmp
接近绝对间接给出FF /4
,而jmp
远绝对间接给出FF /5
。
/4
和/5
是什么意思?
为了运行一个快速的小测试,我附加了一个32位进程,分配了一点内存并使汇编程序插入jmp dword ptr[0x12345678]
;生成的字节码为FF 25 78563412
。我了解地址字节顺序,但25
与/4
或/5
的关系如何?
我的猜测是我生成了jmp
远,而/5
意味着有五个字节作为参数(地址为4个字节,25
为1个字节)。我仍然对25
的来源感到困惑。
答案 0 :(得分:10)
英特尔参考手册中的" 3.1.1.1指令汇总表中的操作码列":
- / digit - 0到7之间的数字表示该数据的ModR / M字节 指令仅使用r / m(寄存器或存储器)操作数。注册领域 包含为指令的操作码提供扩展的数字。
- / r - 表示指令的ModR / M字节包含寄存器 操作数和r / m操作数。
这种表示法通常也在ModR / M字节的各种描述中提到,e.g.