lea 指令#
LEA 即LOAD EFFECTIVE ADDRESS:“LEA A, B”
指令將 B 的地址傳遞給 A。
該指令不會獲取 B 存儲的內容,只會傳遞地址或者後一個操作數的運算結果 (外加中括號),這種方法普遍運用於獲取變量參數的地址。
函數參數與局部變量#
IDA 發現的函數在調用前一般需要傳遞參數,大部分是通過 PUSH 指令 (僅指 32 位) 。
函數參數
傳參
LEA 指令儘管使用了中括號,但它只計算中括號中的表達式然後傳遞地址而不讀取其中的內容。
LEA 的其他作用#
LEA 也可以用於將中括號中的運算結果傳遞到目標寄存器,而不會讀取結果地址上存儲的內容。例如:LEA EAX,[4+5]
指令將運算結果 9 傳給 EAX,而不會像MOV EAX,[4+5]
指令那樣將地址0x9
上存儲的內容傳給 EAX。
LEA 獲取變量地址,MOV 獲取變量地址上存儲的值 (OFFSET 除外) 。