次の情報が必要です。
関数を呼び出すときに、powerpc と intel プロセッサはどのようにスタックを割り当てますか? - powerpc と intel x86 プロセッサなど、それぞれのケースで決定されるスタック サイズの基準は何ですか - スタックに格納されている引数と戻りアドレスの場所。
基本的に、それぞれの場合にレイアウトをスタックする必要があります。
Intel マシンでプログラムがクラッシュ (セグメンテーション違反) し、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;
}
スタック上に「ある可能性がある」アドレスで値が更新されたため、クラッシュします。コードは特定の場所で正確にクラッシュすることはありませんが、gdb でデバッグすると、x86 マシンでこの機能を終了した後、外部のどこかでクラッシュします。
スタックが壊れているのではないかと疑っていますが、powerpc ではクラッシュしていません。
ありがとう