汇编语言lea指令的使用方法

您所在的位置:网站首页 汇编lea和mov 汇编语言lea指令的使用方法

汇编语言lea指令的使用方法

2024-07-06 22:17| 来源: 网络整理| 查看: 265

首先说明汇编指令有Intel语法和at&t两种不同的语法,本文使用的是at&t语法。

如果采用at&t 汇编格式来讨论的话,lea指令的语法是这样的:

lea 源, 目的

源操作数必须是某个地址数值,指向某个内存地址处,目的操作数必须是某个通用寄存器

例子如下:

leaq     (%rdi,%rdi,8), %rax

假设% rdi的值为x, 上面这行会将%rax的值设置为”x+8*x”.

和这个指令看上去有些类似的是movq,如果换成movq的话会好理解一些:

movq     (%rdi,%rdi,8), %rax

就是计算%rdi+%rdi*8这个内存地址处的值,然后放到%rax寄存器中

leaq和movq的不同之处就在于源操作数处的括号的用法不一样了,leaq不再获取括号里面的值所指向的内存里存储的数值,而是直接使用括号里面的值,把它赋给目的操作数。

在汇编指令(lea source, destination)中,位于源操作数位置的source,其实表示*(source),也就是计算source地址处的值,那么lea指令相当于c语言中的&,那么这条汇编指令就相当于&(*(source)),也就是获得source地址,并放到destination寄存器中

在Stack Overflow上看到一个解释的很清楚的回答:

4c7523b4fa2344b4b39940cad0ad423d.png

c59b608db2794e7ea93ea525da0931db.png

From

健康小知识:

适量食用浆果(草莓,蓝莓,沙棘,桑葚,巴西莓,树莓,猕猴桃等等)对大脑是有好处的,但要注意对牙齿的腐蚀作用。

健康是工作和生活的本钱。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3