你可以閱讀關於64位調用約定here。 x64函數應該自行清理,但是,當我從.asm中調用malloc時,它將覆蓋RSP和RSP + 8處的值。這似乎很錯誤。有什麼建議麼?爲什麼malloc覆蓋RSP和RSP + 8?
public TestMalloc
extern malloc : near
.CODE
align 8
TestMalloc proc
mov rcx, 100h
000000018000BDB8 48 C7 C1 00 01 00 00 mov rcx,100h
call malloc
000000018000BDBF E8 CC AC 06 00 call malloc (180076A90h)
ret
000000018000BDC4 C3 ret
000000018000BDC5 66 66 90 xchg ax,ax
TestMalloc endp
END
沒有任何建議。我像你一樣閱讀它。任何(如果有的話)返回值應該是rax。不應該有任何基於堆棧的參數修改正在進行。好奇。 – 2008-12-22 20:06:51