タグ

ブックマーク / blog.lufia.org (2)

  • Goアセンブリの書き方 - Plan 9とGo言語のブログ

    Goアセンブリの書き方からビルド方法までを一通り調べました。Goアセンブリを書いたことのない人がコードを書いてリンクできるところまでは一通り書いているつもりですが、Goアセンブリの言語仕様を網羅してはいないので、興味があれば最後に書いた参考情報も読んでみてください。 この記事ではGo 1.16.xでAMD64命令セットを扱いますが、具体的な命令や値のサイズ以外は、他のアーキテクチャを使う場合でもだいたい同じだと思います。 アセンブリコードの書き方 GoのアセンブリはPlan 9アセンブリを概ね踏襲していて、AT&T記法です。整数を受け取って、それに2を加算した値を返す関数func add2(i int32) int32を書いてみましょう。アセンブリのコードは.sファイルに書きます。また、アセンブリはアーキテクチャに強く依存するので、Goの習慣にしたがってファイル名にはアーキテクチャ名も入れ

    Goアセンブリの書き方 - Plan 9とGo言語のブログ
    W53SA
    W53SA 2021/03/18
  • go getだけでコマンドのバージョンを埋め込む - Plan 9とGo言語のブログ

    2022年8月、Go 1.18対応版にアップデートしました 久しぶりのGoネタです。Go 5 Advent Calendar 2020の18日目が空いていたので書きました。 Goで実装されたコマンドでは、ビルドした時点のバージョンを埋め込むため以下のようなMakefileを用意することがあると思います。 .PHONY: build build: go build -ldflags '-X main.Version=$(VERSION)' しかしこの方法では、go installなどMakefileを経由せずビルドしたバイナリには適切なバージョンが埋め込まれない問題があります。個人的な意見では、可能な限りgo getでインストールできる状態を維持した方が良いと思っていますが、バージョンを埋め込むためには他に方法がないので仕方がないと理解していました。しかしGo 1.19現在、runtime/

    go getだけでコマンドのバージョンを埋め込む - Plan 9とGo言語のブログ
    W53SA
    W53SA 2020/12/19
  • 1