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

Arbitrary number of parameters in Assembler (x86, att)

我正在创建一个具有以下签名的函数:

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

假设在 *something 上有一些东西可以让我知道传递了多少参数(就像 printf 对 '%' 所做的那样)。

所以我在%ebx中存入当前参数号为4的倍数,从8开始,这样可以得到8(%ebp)12(%ebp)

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

movl %ebx(%ebp),variable

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

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

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