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のポインタ操作をアセンブリで見る。アセンブリで見るつながり