我有這個ASM函數,需要4個參數。前兩個參數是通過值傳遞的,後兩個參數是通過引用傳遞的。所以我用這個:如何使用括號括起來的LEA?
PUSH EBP
MOV EBP, ESP
SUB ESP, 20
MOV EAX, [EBP+8]
MOV EBX, [EBP+12]
LEA ECX, [EBP+16]
LEA EDX, [EBP+20]
PUSH EDX
PUSH ECX
PUSH EBX
PUSH EAX
CALL Function
LEAVE
RETN 20
(請注意,我用C內該代碼+ +中使用VC的__asm
語句)。
不過,雖然搜索有關使用LEA
來傳遞參數作爲指針(又名參考)我發現:
[...] Note there are NO brackets in this line. Putting the square brackets around something means "get the contents of", so you were effectively defeating the LEA op. [...]
我想引用在EBP+16
和EBP+20
通過這兩個參數,但我該怎麼辦如果不能使用括號?如果我不放它們,那麼編譯器會拋出一個錯誤(C2424
)。
在此先感謝。
感謝您的回答,但我表示編譯器在執行此操作時會拋出錯誤。 – cdonts
@cdonts你可以'MOV ECX,EBP'然後'ADD ECX,16'。 –
這很合理,但不適用於'LEA'。編譯器拋出'C2415:不正確的操作數類型'任何想法? – cdonts