虽然我学习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