关于Intel手册中r/m8、reg/m8等操作数寄存器含义的确认
关于x86指令操作数符号解读的验证
根据《Intel联合手册》Vol.2A 3-5(编号325462-080US,2023年6月)中操作码摘要表的指令列定义:
- r/m8、r/m16、r/m32、r/m64分别对应8位、16位、32位、64位通用寄存器(GPR)或内存操作数
- reg指宽度不影响指令语义的r16/r32/r64 GPR
你提出的以下两个解读均为正确:
- r/mN中的r对应N位GPR
- reg/m8、reg/m16中的reg对应r16/r32/r64 GPR
解读验证说明
- 对于
r/mN:手册明确该符号代表N位宽度的通用寄存器或内存操作数,因此其中的"r"必然严格对应N位GPR,和操作数位宽完全匹配,符合定义。 - 对于
reg/m8、reg/m16:这类符号中的"reg"遵循手册对reg的通用定义——即宽度不影响指令核心语义的r16/r32/r64 GPR。以你整理的指令为例(如PEXTRB/VPEXTRB提取8位数据到通用寄存器),通用寄存器的宽度(16/32/64位)仅影响高位数据的处理规则(零扩展等),不会改变"提取8位数据"的核心语义,完全符合手册中reg的定义。
包含reg/m8、reg/m16的指令列表
PEXTRB reg/m8, xmm2, imm8 ; 66 0F 3A 14 /r ib PEXTRW reg/m16, xmm, imm8 ; 66 0F 3A 15 /r ib VMOVW xmm1, reg/m16 ; EVEX.128.66.MAP5.WIG 6E /r VMOVW reg/m16, xmm1 ; EVEX.128.66.MAP5.WIG 7E /r VPEXTRB reg/m8, xmm2, imm8 ; VEX.128.66.0F3A.W0 14 /r ib VPEXTRB reg/m8, xmm2, imm8 ; EVEX.128.66.0F3A.WIG 14 /r ib VPEXTRW reg/m16, xmm2, imm8 ; VEX.128.66.0F3A.W0 15 /r ib VPEXTRW reg/m16, xmm2, imm8 ; EVEX.128.66.0F3A.WIG 15 /r ib
内容的提问来源于stack exchange,提问作者YutakaAoki
相关产品推荐
相关产品推荐

