2

我试图很好地掌握 x86 中的 LEA 指令:

leal (%edx, %edx, 4), %eax
leal (%edx, %edx, 2), %eax

鉴于这两行,我知道:

eax = edx + edx*4

进而

eax = edx + edx*2

两个问题。首先,如果这些指令像本例中那样按顺序出现,那么一旦执行第二行,eax 寄存器就会被覆盖?究竟什么会被加载到寄存器中?另一个地址?或者这是对这些寄存器指向的值进行算术运算?

4

1 回答 1

2

如果这些指令按照本例中的顺序出现,那么一旦第二行执行,eax 寄存器就会被覆盖?

是(在两个指令之后都会被覆盖)

究竟什么会被加载到寄存器中?另一个地址?

EDX 描述的内存地址 + EDX 中存储为值的偏移量乘以 2

于 2012-02-06T00:32:38.597 回答