KDOC 299: appendはコンパイルすると消える

この文書のステータス

  • 作成
    • 2024-11-19 貴島
  • レビュー
    • 2024-11-22 貴島

概要

Go言語の append が、コンパイルされるとどうなるかを見てみる。

LEAQ main..autotmp_2+64(SP), AX
MOVL $3, BX
MOVL $2, CX
MOVL $1, DI
LEAQ type:int(SB), SI
PCDATA $1, $0
NOP
CALL runtime.growslice(SB)
MOVQ $3, 16(AX)

つまり、 append はコンパイル時に runtime.growslice(SB) へ変わっているように見える。デバッガで append にステップインできないのは、コンパイル後の実行時に関数自体がなく、相当するソースコードを参照できないから、に見える。

関連

Backlinks