在汇编代码中的以下指令中获取“错误A2070:无效指令操作数”(从CL生成)
mov edx, DWORD PTR ?_Var2@@3JA
shl edx, 1326 ;this line gets the error
mov ecx, DWORD PTR ?_Var3@@3JA
shl ecx, 1514 ;this line gets the error
mov ecx, DWORD PTR __Var4$74314[ebp]
sar ecx, 3811 ;this line gets the error
这里没有发生:
; Line 698
movsx edx, BYTE PTR ?_Var5@@3PAHA+4
movsx ecx, BYTE PTR ?_Var6@@3PADA+1
sar edx, cl
也许与shl,sar与常量而不是寄存器一起使用的事实有关? 困惑:(
答案 0 :(得分:1)
因为edx
和其他寄存器的大小为32位,所以将它们移位超过32位是没有意义的。这就是汇编程序发出错误的原因。