C言語のグローバル変数は明示的に初期化しないと0に初期化されるという説明を読みました。では、いつ初期化されるのでしょうか。
以下のシンプルなコードをアセンブル(gcc 4.8.5)しましたが、このアセンブルのどこでGLOBALがゼロに初期化されているのかお教えください。
C
1# include<stdio.h> 2 3int GLOBAL; 4 5int main(){ 6int i=GLOBAL; 7return 0; 8}
アセンブル出力です
main: push rbp mov rbp, rsp mov eax, DWORD PTR GLOBAL[rip] mov DWORD PTR [rbp-4], eax mov eax, 0 pop rbp ret
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。