【问题标题】:C to assembly - leaq instruction [duplicate]C到汇编 - leaq指令[重复]
【发布时间】:2017-08-15 07:56:47
【问题描述】:

据我所知:

  • %rdi = 第一个参数 = x
  • %rsi = 第二个参数 = y
  • %rdx = 第三个参数 = z
  • 其他人操纵这些寄存器...并存储在返回值寄存器中

汇编代码leaq (%rsi, %rsi, 2), %rdx 的第三行,我将其翻译为:z = y + 2*y

我很困惑,这段代码是错误的,还是汇编魔法?

【问题讨论】:

  • 它正在做y*48y*3*16
  • 是的,我刚刚注意到,我认为它类似于3y << 4 = y * 48
  • @Jester 其中一些说明很难理解(对我来说),你有什么好的参考吗?
  • 别人的,再分析一遍,这段代码好像是对的。
  • 除了官方intel指令集参考?你还需要什么:)

标签: assembly instruction-set


【解决方案1】:

【讨论】:

  • 您能引用 PDF 链接中最相关的部分吗?
  • leaq (%rsi, %rsi, 2), %rdx 表示 %rdx=2*rsi+rsi 等于二进制中的 3*rsi 我们将 3 写为 000011 所以在 4 左 sfift ( sal-shift acc. left) 110000 即 48
猜你喜欢
  • 2013-10-09
  • 1970-01-01
  • 1970-01-01
  • 2018-05-31
  • 2021-04-26
  • 1970-01-01
  • 2018-03-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多