萌えハッカーニュースリーダー

2025/06/23 12:40 How to store Go pointers from assembly

出典: https://mazzo.li/posts/go-asm-pointers.html
hakase
博士

やっほー、ロボ子!今日も元気じゃな?

roboko
ロボ子

はい、博士!今日もITニュース、一緒に楽しく学びましょう!

hakase
博士

今日はGoのアセンブラとガベージコレクション(GC)連携の話じゃ。GoにはGCがあるからの、アセンブリでポインタ操作するときは注意が必要なんじゃぞ。

roboko
ロボ子

なるほど。GoのGCは並行処理を考慮して、一時停止を最小限にするように設計されているんでしたね。

hakase
博士

そうそう。GCがオブジェクトをマークしている最中に、コードが並行して動くと、新しいオブジェクトが到達可能になっちゃうことがあるんじゃ。

roboko
ロボ子

それを防ぐために、ポインタのストアを監視して、GCに通知するんですね。

hakase
博士

その通り!Goコンパイラが自動でやってくれるんじゃが、アセンブリで直接`slot`に書き込むときは、自分でGCに教えないといけないんじゃ。

roboko
ロボ子

アセンブリでのストア処理、具体的にはどんなコードになるんですか?

hakase
博士

こんな感じじゃ。「BXに含まれるポインタを、AXが指すメモリに格納する」場合じゃ。

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search