私はUEFI EDK2 Biosソースで作業しています。我々は、EDK2ソースにプラットフォーム関連の新しいパッケージを作成しました。私が追加したプラットフォームに関連するコードには、奇妙な問題があります。Cファイルのローカル変数がスタックに作成されていません.GCCコンパイルコード
ソースレベルのデバッグを行ったとき、GCCでコンパイルされたときに、C関数内のローカル変数がスタックに作成されていないことに気づきました。
ビジュアルスタジオでコンパイルしたときと同じUEFIコードを、次にC関数のローカル変数をスタックに作成しています。
私は、スタックベース、全てのセグメントレジスタ、現在のコード実行、メモリなどを見ることができるシミュレーション環境でこのコードを実行しています。..
そのマルチコアシステムが、有効で唯一のブートストラップ・プロセッサ
おそらくGCCは変数をレジスタに入れたり、使用されていなかったために最適化したのでしょうか?なぜこれが問題であるのかを記述することはできません(もちろんコードを表示することもできません)。 – unwind
最適化の問題でしょうか?ローカル変数(a.k.a. *自動変数*)は、*スタック上に*存在しません。 –