Assembly C至组装-leaq说明
据我所知:Assembly C至组装-leaq说明,assembly,instruction-set,Assembly,Instruction Set,据我所知: %rdi=1参数=x %rsi=2参数=y %rdx=3参数=z 其他人操纵这些寄存器。。。并存储在返回值寄存器中 汇编代码leaq(%rsi,%rsi,2),%rdx上的第三行,我将其翻译为:z=y+2*y 我很困惑,这是错误的代码,还是一个汇编魔术 简单解释 它移动的是地址而不是值它正在做的是y*48作为y*3*16是的,我刚刚注意到,我认为它像3y@Jester,其中一些指令很难理解(对我来说),你碰巧有什么好的参考资料吗?对于其他人,再分析一次,这段代码似乎是正确的。除
- %rdi=1参数=x
- %rsi=2参数=y
- %rdx=3参数=z
- 其他人操纵这些寄存器。。。并存储在返回值寄存器中
leaq(%rsi,%rsi,2),%rdx
上的第三行,我将其翻译为:z=y+2*y
我很困惑,这是错误的代码,还是一个汇编魔术
简单解释
它移动的是地址而不是值它正在做的是
y*48
作为y*3*16
是的,我刚刚注意到,我认为它像3y@Jester,其中一些指令很难理解(对我来说),你碰巧有什么好的参考资料吗?对于其他人,再分析一次,这段代码似乎是正确的。除了官方的英特尔指令集参考?你还需要什么:)你能引用PDF链接最相关的部分吗?leaq(%rsi,%rsi,2),%rdx的意思是%rdx=2*rsi+rsi,等于3*rsi,我们把3写为000011,所以在4左sfift(sal shift acc.left)后,110000是48