はてなブックマークアプリ

サクサク読めて、
アプリ限定の機能も多数!

アプリで開く

はてなブックマーク

  • はてなブックマークって?
  • アプリ・拡張の紹介
  • ユーザー登録
  • ログイン
  • Hatena

はてなブックマーク

トップへ戻る

  • 総合
    • 人気
    • 新着
    • IT
    • 最新ガジェット
    • 自然科学
    • 経済・金融
    • おもしろ
    • マンガ
    • ゲーム
    • はてなブログ(総合)
  • 一般
    • 人気
    • 新着
    • 社会ニュース
    • 地域
    • 国際
    • 天気
    • グルメ
    • 映画・音楽
    • スポーツ
    • はてな匿名ダイアリー
    • はてなブログ(一般)
  • 世の中
    • 人気
    • 新着
    • 新型コロナウイルス
    • 働き方
    • 生き方
    • 地域
    • 医療・ヘルス
    • 教育
    • はてな匿名ダイアリー
    • はてなブログ(世の中)
  • 政治と経済
    • 人気
    • 新着
    • 政治
    • 経済・金融
    • 企業
    • 仕事・就職
    • マーケット
    • 国際
    • はてなブログ(政治と経済)
  • 暮らし
    • 人気
    • 新着
    • カルチャー・ライフスタイル
    • ファッション
    • 運動・エクササイズ
    • 結婚・子育て
    • 住まい
    • グルメ
    • 相続
    • はてなブログ(暮らし)
    • 掃除・整理整頓
    • 雑貨
    • 買ってよかったもの
    • 旅行
    • アウトドア
    • 趣味
  • 学び
    • 人気
    • 新着
    • 人文科学
    • 社会科学
    • 自然科学
    • 語学
    • ビジネス・経営学
    • デザイン
    • 法律
    • 本・書評
    • 将棋・囲碁
    • はてなブログ(学び)
  • テクノロジー
    • 人気
    • 新着
    • IT
    • セキュリティ技術
    • はてなブログ(テクノロジー)
    • AI・機械学習
    • プログラミング
    • エンジニア
  • おもしろ
    • 人気
    • 新着
    • まとめ
    • ネタ
    • おもしろ
    • これはすごい
    • かわいい
    • 雑学
    • 癒やし
    • はてなブログ(おもしろ)
  • エンタメ
    • 人気
    • 新着
    • スポーツ
    • 映画
    • 音楽
    • アイドル
    • 芸能
    • お笑い
    • サッカー
    • 話題の動画
    • はてなブログ(エンタメ)
  • アニメとゲーム
    • 人気
    • 新着
    • マンガ
    • Webマンガ
    • ゲーム
    • 任天堂
    • PlayStation
    • アニメ
    • バーチャルYouTuber
    • オタクカルチャー
    • はてなブログ(アニメとゲーム)
    • はてなブログ(ゲーム)
  • おすすめ

    ChatGPT

『zenn.dev』

  • 人気
  • 新着
  • すべて
  • go build を使わずにGoプログラムをビルドする

    33 users

    zenn.dev/dqneo

    go build を使わずにGoのプログラムをビルドすることはできるのでしょうか。 結論から言うとできます。 シェルスクリプトで go buildを自作してみたら、2週間ほどでkubectl[1]がビルドできるところまでいけました。 kubectl , uber-go/zap, spf13/cobra, golang/protobuf など有名どころのモジュールをビルドできる クロスコンパイルをサポート(下記4通り。CPUは amd64 ) Mac → Mac Mac → Linux Linux → Mac Linux → Linux ちなみに自作Goコンパイラ babygo と自作アセンブラ goas をこの自作ビルダでビルドしてみたら成功しました。なかなか感慨深いものがあります。 ビルド速度が遅かったり[2]キャッシュの扱いが雑なので実用性はないですが、学習用素材としての価値はあると思

    • テクノロジー
    • 2023/06/22 23:52
    • Go
    • あとで読む
    • プログラミング
    • アセンブラをゼロから作って自作コンパイラをアセンブルするまで(日記)

      176 users

      zenn.dev/dqneo

      GNU Assembler互換(サブセット)のアセンブラをGo言語でフルスクラッチで作ってみました。 開発22日目で自作Goコンパイラ(をセルフホストしたときに出力される20万行のアセンブリ)をアセンブルすることに成功しました。 どうやって作ったかというと、小さいコードを GNU Assembler (以下 as) に食わせて出力されたバイナリを観察する、を繰り返して中のロジックを推定し再現しました。as の実装は見ていません。(一瞬見たけど巨大すぎて何もわからなかった) アセンブラ自作は、やってみるとコンパイラ自作よりだいぶ簡単でハマりポイントも少ないので、学習テーマとしてはおすすめです。2箇所ほど難所(命令エンコーディングのルールを理解するのと、ジャンプ命令の最適化)がありましたがそれ以外はさくさく楽しく作れました。 作ってみた結果、アセンブリ言語の理解が深まったのはもちろんのこと、E

      • テクノロジー
      • 2021/09/28 18:28
      • アセンブラ
      • あとで読む
      • golang
      • go
      • compiler
      • コンパイラ
      • C言語
      • Assembly
      • プログラミング
      • コード
      • 自作Goコンパイラでマルチスレッドが動くようにするまで

        27 users

        zenn.dev/dqneo

        自作Goコンパイラ babygo でマルチスレッドを動かすこと(=子スレッドの作成)に成功しました。 実は以前に挫折していた 1年半前に 一作目のGoコンパイラ minigo でもマルチスレッドに挑戦したことがあるんですが、そのときは子スレッド生成後すぐに Segmentation Faultが起きてしまい、解決方法わからずあきらめたのでした。(動かなかった syscall cloneの残骸 https://github.com/DQNEO/minigo/blob/5ab7420fbca2f65d81bc761d5cbe51a2b28953a8/internal/runtime/runtime.s#L41-L61 ) (当時は gdb でステップ実行すると他のスレッドも処理が進むということを知らなかったので、ただただ謎の挙動にしか見えなかった) 今回やったこと 今回は以下のように要素技術を

        • テクノロジー
        • 2021/09/21 20:03
        • go
        • コンパイラ
        • golang
        • 開発
        • あとで読む
        • Go言語のfor文が動く仕組みをアセンブリレベルで見てみよう

          5 users

          zenn.dev/dqneo

          00029 (min.go:6) MOVQ $1, "".i+8(SP) // i = 1 00038 (min.go:6) JMP 40 // goto 40番地 00040 (min.go:6) CMPQ "".i+8(SP), $10 // compare i <=> 10 00046 (min.go:6) JLE 50 // goto 50番地 if less than or equal to 00048 (min.go:6) JMP 91 // goto 91番地(for loopの出口へ) 00050 (min.go:7) PCDATA $1, $0 00050 (min.go:7) CALL runtime.printlock(SB) 00055 (min.go:7) MOVQ "".i+8(SP), AX // $AX = i 00060 (min.go:7) MOVQ A

          • テクノロジー
          • 2021/06/10 22:33
          • Go言語における式の評価文脈を理解する

            7 users

            zenn.dev/dqneo

            例えば上のコードにおける、2, nil の型はなんでしょうか? y.(T) は何個の値を産出するでしょうか? 答えは「文脈による」です。「相手による」といってもいいかもしれません。 Go言語ではいくつかのケースにおいて、式をそれ単体で評価することができず文脈を考慮しないといけない場面があります。 なおこの「文脈」という概念は仕様書にはっきりと書かかれておらず、Goコンパイラを自作していて発見しました。 nilにおける文脈の役割 事前定義された識別子 nil は、コンピュータ上のハードウェア(つまりメモリやレジスタ)上でどんな姿かたち(値)をしているでしょうか? 答えは「文脈による」です。文脈によって、8バイト分のゼロだったり16バイト分のゼロだったり24バイト分のゼロだったりします。[1] これはコンパイル後のアセンブリを見てみるとよくわかります。 x86-64環境でのアセンブリを例にとっ

            • テクノロジー
            • 2021/03/04 02:13
            • golang
            • Go言語におけるブロックとスコープ

              5 users

              zenn.dev/dqneo

              Go言語には「ブロック」と「スコープ」という似たような2つの概念があります。 「ブロックとスコープはどう違うの?」という疑問に答えてみたいと思います。 ブロックとはソースコードの「かたまり」のこと ブロックとはソースコードをある単位でまとめた「かたまり」です。 最もわかりやすい例は、記号 { ... } でくくられたステートメント群です。 これを「明示的ブロック」と言います。 「明示的ブロック」以外にも「暗黙のブロック」というものがあります。 暗黙ブロックは以下のとおり5種類あります。 ユニバースブロック: 全てのGoのソースコードの外側を包んでいる仮想的なブロック パッケージブロック: 1パッケージ内の全ソースコードを包含するブロック ファイルブロック: 1ファイル内の全ソースコードを包含するブロック if, for, switchブロック: if,for,swtich文それ自体がブロッ

              • テクノロジー
              • 2020/09/25 17:27
              • go
              • あとで読む

              このページはまだ
              ブックマークされていません

              このページを最初にブックマークしてみませんか?

              『zenn.dev』の新着エントリーを見る

              キーボードショートカット一覧

              j次のブックマーク

              k前のブックマーク

              lあとで読む

              eコメント一覧を開く

              oページを開く

              はてなブックマーク

              • 総合
              • 一般
              • 世の中
              • 政治と経済
              • 暮らし
              • 学び
              • テクノロジー
              • エンタメ
              • アニメとゲーム
              • おもしろ
              • アプリ・拡張機能
              • 開発ブログ
              • ヘルプ
              • お問い合わせ
              • ガイドライン
              • 利用規約
              • プライバシーポリシー
              • 利用者情報の外部送信について
              • ガイドライン
              • 利用規約
              • プライバシーポリシー
              • 利用者情報の外部送信について

              公式Twitter

              • 公式アカウント
              • ホットエントリー

              はてなのサービス

              • はてなブログ
              • はてなブログPro
              • 人力検索はてな
              • はてなブログ タグ
              • はてなニュース
              • ソレドコ
              • App Storeからダウンロード
              • Google Playで手に入れよう
              Copyright © 2005-2025 Hatena. All Rights Reserved.
              設定を変更しましたx