2012-02-06 95 views
1

我試圖讓86對LEA指令良好的抓地力:86 lea指令

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

鑑於這兩條線,我知道:

eax = edx + edx*4

然後

eax = edx + edx*2

兩個問題。首先,如果這些指令按照本例中的順序出現,那麼一旦第二行執行,eax寄存器就會被覆蓋?什麼會被加載到寄存器中?另一個地址?或者這是對這些寄存器指向的值進行算術運算?

+2

可能重複http://stackoverflow.com/questions/9153282/lea-assembly在EDX值 - 指令) – Grizzly 2012-02-06 00:25:09

+1

如何下載英特爾(AMD)CPU手冊並閱讀它們? – 2012-02-06 02:05:22

+0

你也可以通過http://www.agner.org/optimize/ – Gigi 2012-02-06 02:17:00

回答

2

如果這些指令按照本示例的順序出現,那麼一旦第二行執行,eax 寄存器將被覆蓋?

是(這是兩個指令後覆蓋)

以及究竟會被加載到寄存器?另一個地址?

通過EDX +描述的存儲器地址的偏移量存儲作爲乘以2

[LEA彙編指令(的