我正在使用以下签名创建一个函数:
int function_test (char *something, ...);
让我们假设在某些东西上可以让我知道传递了多少参数(就像printf与'%'一样)。
所以我将当前参数编号存储在%ebx
中,从8开始,以4的倍数存储,因此我可以获得8(%ebp)
,12(%ebp)
等。
如何获取该参数的内容?当我尝试:
movl %ebx(%ebp),variable
我收到错误(junk %ebp after register
)。
如何获取该参数的内容?增加其值的语法是什么?
答案 0 :(得分:1)
movl (%ebp, %ebx), %eax
。请注意,您不能有两个内存引用,因此如果您想在variable
中进行此操作,则必须分两步完成。显着增加使用inc
而不是mov
。