【问题标题】:LEAL instruction, what does this mean?LEAL指令,这是什么意思?
【发布时间】:2012-10-31 00:22:20
【问题描述】:

首先我通过 movl 12(%ebp) %edx. 分配 edx = y

为什么leal (%edx, %edx, 2) , %edx = edx = 3*y

【问题讨论】:

标签: assembly addressing-mode


【解决方案1】:

LEA 是“加载有效地址”的缩写。 (在 AT&T 语法中,对于 32 位操作数,它拼写为“leal”。)基本上,它采用给定括号中的内容计算的地址,而不是读取或写入内存,而是分配地址本身 到目标操作数。

它通常用于进行地址计算,但也经常用于乘以某些整数常量(3、5 和 9),假装一个数字是一个地址。 (地址只是数字,所以一点也不难。)

【讨论】:

    【解决方案2】:

    直译为“将有效地址EDX + EDX * 2装入EDX”。

    80x86 有一些相对强大的寻址模式。例如,“movl (%edx, %edx, 2), %edx”将是“将有效地址 EDX + EDX

    您的部分困惑可能是由 AT&T 语法引起的——地址的书写方式远非自然。为了比较;对于 Intel 语法,它会更清晰(例如“lea edx,[edx+edx*2]”)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多