为什么在 LEA 中使用方括号?

2023-12-29

在装配中,方括号[]似乎具有相同的含义* in C编程语言。它们用于取消引用指针。 取消引用指针意味着要引用特定的内存位置来读取或写入它。

因此,在 a 的情况下使用方括号是非常合乎逻辑的MOV。 但他们也将其用于 LEA 的逻辑原因是什么?

LEA EAX, [EBP -4],看起来像取消引用指针,EBP - 4,引用指向的内存位置,但它不会读取该位置中包含的值,而是读取地址。

我对此有点困惑。你能给我正确的思考方式吗?
Does LEA与取消引用的概念有什么联系吗? 显然不是为了读取内存,而是主要指代内存位置,不是为了它的值,而是为了它的地址。 我不希望这成为一个哲学问题。


The LEA指令被设计成看起来像内存访问指令——因此可以执行所有寻址方式 https://en.wikipedia.org/wiki/Addressing_mode。当然,正如您所注意到的,区别在于LEA加载“有效地址”而不是该位置的内存值。

Thus, LEA与内存访问操作类似,但具体来说,用 C 术语来说,就是获取地址——就像&a[i]在 C 中。就像在 C 中一样&, 的结果LEA始终是指针大小的值,而不是我们可以获取/存储字节、字等的实际访问。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么在 LEA 中使用方括号? 的相关文章

随机推荐