You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Intel x86指令中Opcode 0xFF的/2、/3标识含义咨询

哈哈,这个问题我刚学x86汇编的时候也卡过!咱们一步步拆解清楚。

先搞懂 /2、/3 是什么意思

你看到的 FF /2、FF /3 里的数字,是x86指令集里ModR/M字节的「Reg/Opcode字段」值。

x86指令里,有些主操作码(比如这里的FF)属于“扩展操作码”——它本身不完整,需要靠后面紧跟的ModR/M字节里的3位Reg字段来区分具体指令变体。这个字段的十进制值就用/n来表示,比如/2对应二进制010,/3对应011。

拿FF开头的指令举例,不同的/n对应完全不同的操作:

  • FF /0:INC r/m(递增寄存器或内存中的值)
  • FF /1:DEC r/m(递减寄存器或内存中的值)
  • FF /2:CALL r/m16/32(近调用,目标是寄存器或内存中的近地址)
  • FF /3:CALL r/m16:32(远调用,目标是内存中的远地址,包含段选择子和偏移量)

那你看到的FF 15怎么对应FF /2?咱们拆一下15这个ModR/M字节:
15的二进制是00010101,按照ModR/M字节的标准结构(高2位Mod + 中间3位Reg + 低3位R/M):

  • 高2位(bit7-6):00 → Mod字段,表示采用无位移的内存寻址模式
  • 中间3位(bit5-3):010 → 十进制就是2,也就是/2,刚好对应CALL近调用的变体
  • 低3位(bit2-0):101 → R/M字段,结合Mod=00,在32位模式下表示「直接寻址」——也就是后面会紧跟4字节的内存地址,所以FF 15 00 00 00 00实际就是CALL [0x00000000],这就是你看到的示例指令。
2000页手册该找哪部分?

这么厚的手册确实容易懵,直接瞄准这几个核心章节:

  • 「Instruction Format」(指令格式):先把这个章节啃透,里面会详细讲解ModR/M字节、SIB字节这些基础指令结构,这是理解所有扩展操作码的前提。
  • 「Opcode Map」(操作码映射表):这里会按主操作码分类汇总,所有以FF开头的指令都会集中列在这里,每个变体对应的/n、功能、寻址模式一目了然。
  • 「CALL Instruction」(CALL指令详情):如果要深挖CALL指令的具体行为,直接搜这个章节,里面会拆分不同寻址模式的CALL,包括FF /2、FF /3对应的执行流程、标志位影响等细节。

另外,很多指令集手册会按操作码数值排序,你直接翻到FF对应的页码,就能快速找到所有FF开头的指令变体,比全局搜索效率高多了。

内容的提问来源于stack exchange,提问作者ShP

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:37:49