在x86汇编语言中,有没有办法获得上半部分EAX
登记?我知道AX
寄存器已经包含了下半部分EAX
注册,但我还不知道有什么方法可以获得上半部分。
我知道mov bx, ax
会移动下半部分eax
into bx
,但我想知道如何移动上半部分eax
into bx
以及。
If你想保留 EAX 和 EBX 的上半部分:
rol eax, 16
mov bx, ax
rol eax, 16
如果有可用的暂存寄存器,则效率更高(并且不会为后续读取 EAX 的指令引入额外的延迟):
mov ecx, eax
shr ecx, 16
mov bx, cx
如果你不需要其中任何一个,mov ebx, eax
/ shr ebx, 16
是显而易见的方法并避免任何部分寄存器停顿或错误依赖 https://stackoverflow.com/questions/41573502/why-doesnt-gcc-use-partial-registers.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)