[英]LEA & MOV instruction comparision
说明 1:
LEA DX, MESSAGE ; Move the address of MESSAGE in register DX
说明 2:
MOV DX, OFFSET MESSAGE ; Move the address of MESSAGE in register DX
注意:我已经阅读了这个问题
在我的 32 位系统上,指令匹配这样的操作码:
8d 15 c8 90 04 08 lea 0x80490c8,%edx
ba c8 90 04 08 mov $0x80490c8,%edx
因此,如果使用lea
则在将代码加载到内存中时会使用整个额外字节。
我在某一点发现了对 AMD 芯片的引用, lea
延迟比mov
延迟低,但只有一个时钟周期(如果数据不在 L1 缓存中,这将无关紧要)。 我不确定该结果是否适用于最近的处理器。
我发现lea
在尝试向这样的基地址添加偏移量时很有用:
lea message(,%esi,2), %ecx # put address of message + 2 x ESI in ECX
而我不能这样做:
mov $message(,%esi,2), %ecx # fails on bad syntax
这会产生错误的结果:
mov message(,%esi,2), %ecx # puts _content_ at address, not address, into ECX
至少在我的汇编程序中(GNU as)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.