Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly FF/4中的/4是什么意思?_Assembly_X86_Machine Code_Opcode - Fatal编程技术网

Assembly FF/4中的/4是什么意思?

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的来源感到困惑。来自

我为x86文档编写的一个站点有几个带斜杠和数字的指令代码。例如,
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”,或“长模式”。应该是一个足够的起点。