【发布时间】:2015-10-14 11:38:48
【问题描述】:
我是 ASM 初学者,我知道 mul 指令只适用于寄存器或内存。
现在,当我们使用 :mul var1 时,如何检索 var1 的值?我认为它应该先通过注册,对吧?但是在这种情况下,如果所有寄存器都被占用会发生什么?
【问题讨论】:
-
@stuartd:我看过这篇文章,它只是说 mul 不适用于立即值。
-
它不会“通过注册”。该值与将要乘以的任何值一起发送到 ALU,这取决于 var1 的位宽。但是请注意,这是无效的
mul word 3,但是,如果您有 3 所在的 mem 的地址,您可以这样做mul word [varThatEqualsThree]获取英特尔手册,这里:Intel 64 and IA-32 Architectures Software Developer's... -
add eax, [mem]的工作方式相同... x86 是 CISC ISA,这是正常的。如果您想知道现代微架构如何在内部实现它,请参阅 realworldtech.com/sandy-bridge 和 stackoverflow.com/tags/x86/info 中的其他链接