Assembly FF/4中的/4是什么意思?
我为x86文档编写的一个站点有几个带斜杠和数字的指令代码。例如,Assembly FF/4中的/4是什么意思?,assembly,x86,machine-code,opcode,Assembly,X86,Machine Code,Opcode,我为x86文档编写的一个站点有几个带斜杠和数字的指令代码。例如,jmp近绝对间接给出FF/4,而jmp远绝对间接给出FF/5 /4和/5是什么意思 为了运行一个快速的小测试,我附加了一个32位进程,分配了一位内存,并让汇编器插入jmpdwordptr[0x12345678];生成的字节码是FF 25 78563412。我理解地址的结尾,但是25与/4或/5有什么关系 我猜我生成了一个jmpfar,/5意味着有五个字节作为参数(4个字节用于地址+1个字节用于25)。我仍然对25的来源感到困惑。来自
jmp
近绝对间接给出FF/4
,而jmp
远绝对间接给出FF/5
/4
和/5
是什么意思
为了运行一个快速的小测试,我附加了一个32位进程,分配了一位内存,并让汇编器插入jmpdwordptr[0x12345678]
;生成的字节码是FF 25 78563412
。我理解地址的结尾,但是25
与/4
或/5
有什么关系
我猜我生成了一个
jmp
far,/5
意味着有五个字节作为参数(4个字节用于地址+1个字节用于25
)。我仍然对25
的来源感到困惑。来自《英特尔参考手册》的“指令摘要表中的3.1.1.1操作码列”一节:
- /digit-介于0和7之间的数字表示 指令仅使用r/m(寄存器或内存)操作数。注册表字段 包含为指令操作码提供扩展名的数字
- /r-表示指令的ModR/M字节包含寄存器 操作数和r/m操作数
这种表示法通常也在ModR/M字节的各种描述中提到,4或5是指令第二个字节(modrm)中3位字段的值。您应该参考英特尔官方文档。正如伊戈尔所引述的那样,它甚至有解释,而且它也是官方的;)重复:,@Jester我不认为官方的英特尔文件有一个快速的答案,它可能在解释的大块,但不值得花那么多时间去查找。因此,这就是堆栈溢出的好处。对于初学者或只想要一个特定答案的人来说,查阅所有文档没有多大意义。有时人们也需要一些指导/帮助,如果只要求其他人注意的时间要少得多的话,你不能给人们一份500页的文档并告诉他们搜索一个问题:示例中的
25
就是ModR/M字节。噢,哇!那个链接是金色的!所以这肯定是一个近乎跳跃的过程。我唯一理解的问题是如果PM64和adsize=32,那么有效地址=[EIP+sdword]
-什么是PM64?谷歌的快速搜索给出了令人沮丧的答案。几年后,终于找到了答案:PM64指的是“处理器模式64”,或“长模式”。应该是一个足够的起点。