【发布时间】:2017-08-15 07:56:47
【问题描述】:
据我所知:
- %rdi = 第一个参数 = x
- %rsi = 第二个参数 = y
- %rdx = 第三个参数 = z
- 其他人操纵这些寄存器...并存储在返回值寄存器中
汇编代码leaq (%rsi, %rsi, 2), %rdx 的第三行,我将其翻译为:z = y + 2*y。
我很困惑,这段代码是错误的,还是汇编魔法?
【问题讨论】:
-
它正在做
y*48和y*3*16 -
是的,我刚刚注意到,我认为它类似于
3y << 4 = y * 48。 -
@Jester 其中一些说明很难理解(对我来说),你有什么好的参考吗?
-
别人的,再分析一遍,这段代码好像是对的。
-
除了官方intel指令集参考?你还需要什么:)