汇编语言lea指令的使用方法 |
您所在的位置:网站首页 › 汇编lea和mov › 汇编语言lea指令的使用方法 |
首先说明汇编指令有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上看到一个解释的很清楚的回答: From 健康小知识: 适量食用浆果(草莓,蓝莓,沙棘,桑葚,巴西莓,树莓,猕猴桃等等)对大脑是有好处的,但要注意对牙齿的腐蚀作用。 健康是工作和生活的本钱。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |