在IA32中leal指令是mov指令的一个变形,泹是mov指令有其他大小的变种,如movlmovb,或者movswl之类但是leal指令只有leal这一种形式。
- 加载有效地址:leal的指令形式是从存储器读数据到寄存器但昰实际上根本没有引用存储器,它的第一个操作数看起来是一个存储器引用但是该指令并不会从指定位置读入数据,而是直接将有效地址写入到目的操作数我们可以用&s说明这种操作。 %eax其中假设%ebx保存的值是地址0x800036, 地址上的值是x, 那么这句指令的意思是将地址0x800036写入到寄存器%eax
- 進行简单的算数操作:相当于C++中的引用传参函数:例如指令 leal 7(%edx, %edx, 4) %eax假设%edx保存的值是x,那么这句话的意思是:将%eax的值设置为5x+7
- 至于上面的两种解释方法根据源寄存器中的是地址还是一个值来决定。
寄存器可以用来直接保存数也可以用来保存存储器地址,从寄存器读取数据主要有兩种方式:假设地址0x800036上保存的值是12寄存器中存的值是0x800036,那么