簡體   English   中英

LEAL 指令,這是什么意思?

[英]LEAL instruction, what does this mean?

所以首先我通過執行movl 12(%ebp) %edx.分配 edx = y movl 12(%ebp) %edx.

為什么leal (%edx, %edx, 2) , %edx = edx = 3*y

LEA是“加載有效地址”的縮寫。 (在 AT&T 語法中,對於 32 位操作數,它拼寫為“leal”。)基本上,它采用給定括號中的內容計算的地址,而不是讀取或寫入內存,而是將地址本身分配給目標操作數。

它通常用於進行地址計算,但也經常用於乘以某些整數常量(3、5 和 9),假裝數字是地址。 (地址只是數字,所以它一點都不難。)

直譯,就是“將有效地址EDX+EDX*2加載到EDX中”。

80x86 有一些相對強大的尋址模式。 例如,“movl (%edx, %edx, 2), %edx”將是“將有效地址 EDX + EDX << 1 處的值加載到 EDX 中”。 LEA 指令允許這個相對強大的尋址電路被回收並用於其他目的。

您的部分困惑可能是由 AT&T 語法引起的 - 地址的編寫方式遠非自然。 作比較; 對於英特爾語法,它會更清晰(例如“lea edx, [edx+edx*2]”)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM