【发布时间】:2020-08-29 21:09:23
【问题描述】:
我有一个 2 字节的值存储在堆栈中,我想将 pop 放入寄存器中。我可以通过使用其中的 16 位寄存器在其中一个通用寄存器上执行此操作,例如:
popw %cx
有没有办法将它放入另一个寄存器,例如r11,并用零填充?比如:
popzwq %r11 # making up the syntax
或者什么是正确的方法?
【问题讨论】:
-
您真的只想将堆栈指针增加 2 吗?堆栈通常是 8 字节对齐的,因此增加 2 是不常见的。
-
pop %r11movzwq %r11w, %r11 -
设计师可以引入无穷无尽的复合指令,他们只会花时间和电路来做一些真正有用的事情。保持指令集整洁和原子也是设计者的原则。
标签: assembly x86 x86-64 cpu-registers