我想象数据如何进入RAX寄存器有点麻烦。
这是汇编语言:
.data
dwordVal DWORD 94326732h
.code
mov rax, 0FFFFFFFF00000000h
mov rax, dwordVal
我读到你不能用MOV将较小的操作数移动到更大的操作数中。在我看来,dwordVal只会填充64位rax寄存器的下半部分,所以这是不允许的。如果我错了,请纠正我。
答案 0 :(得分:2)
mov
指令将始终使用与目标操作数完全相同的完整值填充目标操作数。
所以,你的理解是不正确的。您无法使用rax
填充mov
的部分内容。
正如Jester在评论中已经说过的那样,mov rax, dwordVal
的结果恰恰取决于你的汇编程序所遵循的约定,而一些汇编程序实际上会拒绝这样的非法事件。
我可以告诉你的一件事是,rax
中的0FFFFFFFF00000000h
绝对没有留下任何先前加载到其中的内容。