KDOC 145: 見てわかるGoアセンブリの違い
この文書のステータス
- 作成
- 2024-05-01 貴島
- レビュー
- 2024-05-06 貴島
概要
Cが出力するアセンブリはだいたいわかってきた。自信がついてきたので、以前全然わからなかったGoアセンブリも読んでみたところ、ぜんぜん読めなかった。違うと気づいた部分をまとめる。疑問点のメモで、とくに解決はしない。
違い
少なくとも、試したコードから見える違い。
↓Goの、RISC-V向けアセンブリ。
- 命令が大文字
- 見慣れない中点記号
- ラベル(
main:
みたいな)がない LEAF|NOFRAME|ABIInternal
といった謎の文字がつくFUNCDATA
の行は謎$0-8
は引数のようだ- 関数は
TEXT
,FUNCDATA
で始まる形に置き換えられる - レジスタは
X10
,X0
,X1
とか。伝統的なレジスタ名は出てこない - このコード例だからだろうが、計算結果しかアセンブリに現れない。乗算命令
mul
は出てこない。先に計算してそう - 馴染みのあるのは
MOV
くらい
関連
- KDOC 141: Cのポインタ操作をアセンブリで見る。アセンブリで見るつながり