我需要以下信息:
powerpc 和 intel 处理器在调用函数时如何分配堆栈?- 在每种情况下确定堆栈大小的基础是什么,即 powerpc 和 intel x86 处理器 - 参数和返回地址存储在堆栈上的位置。
基本上我需要在每种情况下堆叠布局。
我有一种情况,我的程序在英特尔机器中崩溃(分段错误)并且在 powerpc 上运行良好。我找到了崩溃的原因,代码片段如下:
int function_a(int a)
{
int local_var = 1;
int ret_var;
ret_var = function_b(&local_var);
}
int function_b (int* local_var_in_calld_fn)
{
while (some_condition)
{
*local_var_in_calld_fn = some_computed_value; /* Cause of crash */
local_var_in_calld_fn++;
}
return something;
}
某些值在“可能”在堆栈上并因此崩溃的地址上更新。代码完全不会在位置崩溃,但是当在 x86 机器上退出此功能后,在 gdb 中调试时会在外部某处崩溃。
我怀疑它破坏了堆栈,但它并没有在 powerpc 上崩溃。
谢谢