x86函数调用不起作用

时间:2015-10-10 19:52:10

标签: x86 stack pop

我在C中有这两个函数:

foo2014-01-01-13
foo2014-11-05-13
foo2015-04-23-13
foo2015-08-02-12

我在汇编中对第二个函数进行编码,如下所示:

for r in matrix:
     r.append(inital_value)    

我遇到的问题是我的调用func1取我原来的值 参数,而不是减去3之后的值。我猜这是因为我在打电话之前不推或弹。有人可以指导我在汇编代码中放置推送和弹出指令吗?

1 个答案:

答案 0 :(得分:0)

x86标签wiki(https://stackoverflow.com/tags/x86/info)有包含x86-64 ABI的东西的链接,它告诉你哪个函数args进入哪个寄存器(提示,第一个arg进入edi / rdi,而不是eax,for Linux SystemV ABI),哪个寄存器保存返回值(eax / rax,与32bit相同)。

推动堆栈上的args是传统32位ABI的工作方式。