汇编中MOV和LEA的区别是什么

2024-12-01 19:03:51
推荐回答(1个)
回答1:

LEA 指令,可以用MOV 指令代替,但是写法上要注意. 例如把0x114地址单元的地址送给eax, (at&t 书写格式)可以写成 lea edx, dword ptr ds:0x114, 其结果等价于movl $0x114,%edx, LEA 指令在取到内存地址时比较方便,例如汇编指令 lea ignore_int,%edx

ignore_int 是一个地址符号,会被翻译成一个地址值, 它等价于 movl $ignore_int,%edx
但 lea 还有另一种应用场景
例如: lea idt(,%ecx,8), %esi
以idt 为基地址,%ecx*8为偏移,计算这个数值赋值给esi , 显然这是为表格操作而设计的,所以LEA 在处理地址方面还稍显灵活。