堆栈,装配,参数

时间:2013-12-25 09:06:55

标签: assembly stack

我有一个参数数量未知的函数。 我试图通过C来做它并没有用。

我需要算一下它们的数量。 我假设它可以与堆栈一起使用。 所以我怎么算他们.. ??

感谢

1 个答案:

答案 0 :(得分:1)

“未知数量的参数”你的意思是这样的:

void some_function(int first_arg, ...);

明确的答案是:在这种情况下,可以获得参数数量。

某些版本的GCC不会“推送”堆栈上的参数,而是保留一些堆栈内存,然后将参数写入xxx(%ESP)。

在这种情况下,以下代码:

printf("%u, %u, %u, %u\n", 1, 2, 3, 4);
printf("%u, %u, %u, %u\n", 1);

将导致两个非常相同的“printf”调用(因为数字2,3和4仍在堆栈中)。