HardBirch

解答 LEA指令的疑惑

时间:11-07-16 栏目:系统技术篇 作者:鲁智森也有文化 评论:0 点击: 1,801 次

问题:
LEA指令不是取地址的吗?为什么最后ECX=0x30,可以用来存储立即数?
那这样为什么不直接用mov ecx,0x30呢?
这样用LEA指令有什么含义?


答案:
1. mov ecx,[eax+0x30]表示先运算eax+0x30得到一个结果,以这个结果为地址找一个ecx长度的内存数赋给ecx
2. lea ecx,[eax+0x30]表示先运算eax+0x30得到一个结果,把这个结果(mov时地址)赋给ecx ,效果为ecx=eax+0x30  (这里eax参与了运算却没有改变值)
如果没有LEA指令,那么:
mov ecx,0x30
add ecx,eax
从指令长度和执行速度来看.lea ecx,[eax+0x30]要好.

声明: 本文由( 鲁智森也有文化 )原创编译,转载请保留链接: 解答 LEA指令的疑惑

解答 LEA指令的疑惑:等您坐沙发呢!

发表评论


QQ群互动

Linux系统与内核学习群:194051772

WP建站技术学习交流群:194062106

魔豆之路QR

魔豆的Linux内核之路

魔豆的Linux内核之路

优秀工程师当看优秀书籍

优秀程序员,要看优秀书!

赞助商广告

友荐云推荐