看板 ASM 關於我們 聯絡資訊
為了某些程式的需求 想要先寫一些測式的做法 可是也失敗了 我想用MASM寫一段procedure 去存取由C++傳進去的陣列 C++ part: extern "C" int getFirst(int *arr) void main() { int *a = new int[5] for(int i=0;i<5;i++) { a[i] = i; } int b = getFirst(a); cout << b; } MASM part: .code _getFirst proc near push ebp mov ebp, esp mov eax, [ebp] pop ebp ret _getFirst endp 我該怎樣才可以用MASM 去做這個procedure呢 該從高階改還是低階改 還有 關於暫存器的用法 有什麼 使用原則(像EBP ESP等) 也跟大家請教一下 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 163.22.18.78
wil771126:補充 [ebp] 後面加上 +8 +12 也不是我要的 06/19 22:31
※ 編輯: wil771126 來自: 163.22.18.78 (06/19 22:38)
wil771126:我發現式用 [eax+8] 來取 規則是什麼@@ 06/20 02:17
loveflames:[eax+8]?你是存取a[2]對吧 06/20 02:48
loveflames:mov eax, [ebp]這行有點奇怪,你拿舊ebp的值要做什麼? 06/20 02:51
wil771126:如果是傳一個整數 要用esp (傳給ebp) 當address去取得 06/20 22:21
wil771126:eax+8 是a[0]沒錯 好像傳進去都從+8開始的 06/20 22:21
loveflames:那你得把環境敘述的更詳細,最好還要截圖 06/21 03:56
loveflames:因為這不合一般的規則,a已經推進getFirst的堆疊裡 06/21 03:57
loveflames:就應該用getFirst的ebp來取 06/21 03:58