「Go/Goのプログラムがどんなアセンブリにコンパイルされるか?」の版間の差分

削除された内容 追加された内容
Ef3 (トーク | 投稿記録)
タグ: 2017年版ソースエディター
Ef3 (トーク | 投稿記録)
推敲
タグ: 2017年版ソースエディター
 
1 行
{{Nav}}
= Goのプログラムがどんなアセンブリにコンパイルされるか? =
Goのコンパイル、文法が簡素なこと化された構文とキャッシュを活の使することでによりとても非常に高速に終わりコンパイルされますが、(中間コードではなく)ネイティブな機械語を生成しています。
 
ここでは、実際にどのようなコードが生成されているか調べを検証してみましょ
 
== Hello, World を逆アセンブル ==
42 行
</syntaxhighlight>
:と、素性はわかりませんが
: go tool objdump という Go の逆アセンブラーは、この形式を理解できます(-S はソースも併せて表示するオプションです)。
:<syntaxhighlight lang=shell>
% go tool objdump -S hello.o > hello.objdump
86 行
よく見ると、ソースの fmt.Println("Hello, World") が、fmt.Fprintln(os.Stdout,) に置き換えられておりインライン展開が行われていることがわかります。
 
Goはコンパイラーですが、コンパイラー自身も体がGoで書かれソースコードを含んでとともに配布されており、他にも
 
go tool nm
94 行
 
{{Nav}}
 
== 脚註 ==
<references />