2012-02-15 62 views
-2

我是彙編程序設計新手,我想知道爲什麼變量的地址總是被推送到堆棧而不是實際的變量。例如:程序集編程:爲什麼函數參數始終是內存位置?

的.text:00401270推EBP

的.text:00401271 MOV EBP,尤指

的.text:00401273子ESP,80H

的.text:00401279推偏移aString1

.text:0040127E call sub_401554

爲什麼實際變量從不會作爲參數推送?

+1

你可以。但是這個字符串不能超過4個字符,不太實用。 – 2012-02-15 05:10:37

回答

2

並非所有的「函數」參數都必須通過引用傳遞,但是您的示例是一個字符串,由於其變量大小在堆棧上不合適,所以通過引用傳遞該字符串。

在返回之前調用函數和清理的細節取決於您要與之進行接口的調用約定。

如果您的調用者將始終是您控制的彙編代碼,那麼您可以選擇在堆棧上傳遞較短的參數,但通過指針可以使用更大更復雜的數據結構,編碼組裝優化。

+0

感謝您的幫助:) – user1210446 2012-02-15 06:22:47