雖然我學習x64程序集,但我試圖使add方法添加兩個整數並使用程序集返回整數。 我曾與x86的工作代碼,我試圖轉換爲x64程序集:將x86代碼轉換爲x64的簡單例子
只是我改變了寄存器的名稱是x64和生成的對象文件沒有錯誤,但當我在我的C函數中使用它,我總是得到sum = 0.
我認爲參數位置存在問題,我沒有找到這樣的問題的好文檔。
section .text
global addi
addi:
push rbp
mov rbp, rsp
mov rax,[rbp+12]
mov rdx,[rbp+8]
add rax, rdx
pop rbp
ret
實際上,這個調用約定不適用於x86_64_in general_,而是適用於類SystemV系統(Linux和朋友)。如果你在Windows上,x86_64還有另一個調用約定,其中只有前四個參數被傳入寄存器(rcx,rdx,r8,r9)。 – 2016-09-04 14:16:03