Assembler中的任意数量的参数(x86,att)

时间:2015-04-16 14:11:55

标签: assembly x86 att

我正在使用以下签名创建一个函数:

int function_test (char *something, ...);

让我们假设在某些东西上可以让我知道传递了多少参数(就像printf与'%'一样)。

所以我将当前参数编号存储在%ebx中,从8开始,以4的倍数存储,因此我可以获得8(%ebp)12(%ebp)等。

如何获取该参数的内容?当我尝试:

movl %ebx(%ebp),variable

我收到错误(junk %ebp after register)。

如何获取该参数的内容?增加其值的语法是什么?

1 个答案:

答案 0 :(得分:1)

movl (%ebp, %ebx), %eax。请注意,您不能有两个内存引用,因此如果您想在variable中进行此操作,则必须分两步完成。显着增加使用inc而不是mov