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

MASM 64位汇编32位立即数符号扩展错误检测及易出错指令查询

x64 触发imm32自动符号扩展的完整指令列表

以下所有指令均满足「目标操作数为64位寄存器/内存,源操作数为32位立即数(imm32)」的格式,只要传入的立即数落在0x80000000 ~ 0xFFFFFFFF区间,MASM就会自动对其做符号扩展,生成高32位全为1的64位立即数编码。

# 算术运算类
add  r64/m64, imm32
adc  r64/m64, imm32
sub  r64/m64, imm32
sbb  r64/m64, imm32
imul r64, r64/m64, imm32

# 逻辑运算类
and  r64/m64, imm32
or   r64/m64, imm32
xor  r64/m64, imm32

# 比较测试类
cmp  r64/m64, imm32
test r64/m64, imm32

# 数据传送类
mov  r64/m64, imm32

# 栈操作类
push imm32

补充说明

  • 你遇到的比较失效问题是典型触发场景:SOCKET_ERROR_INT EQU 0FFFFFFFFh落在符号扩展区间,cmp qword ptr [rbp-8], imm32匹配上述指令格式,立即数被扩展为0xFFFFFFFFFFFFFFFF,和内存中存储的0x00000000FFFFFFFF不相等,导致跳转逻辑失效。
  • 规避方案可直接修改常量定义,显式声明为64位无扩展形式:SOCKET_ERROR_INT EQU 00000000FFFFFFFFh,即可强制汇编器不做符号扩展。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 17:39:05