世界を動かす技術を、日本語で。

64ビットアセンブリの技法

2026年8月1日原文(nostarch.com)

概要

  • Machine-Level OOP, Exceptions, and Concurrency は、アセンブリ言語での高度なプログラミング技法解説書
  • C++やPython、Rust の構造をMASMでゼロから再構築する内容
  • vtableや例外処理、並行処理 などを命令レベルで詳細に解説
  • Windows環境 での実装を重視し、動作原理と落とし穴も明示
  • 著者は Randall Hyde、アセンブリ言語教育と実務経験が豊富

Machine-Level OOP, Exceptions, and Concurrency 概要

  • The Art of 64-Bit Assembly シリーズの一冊
  • 2026年6月刊行予定、792ページ、ISBN-13: 9781718504349
  • 各章で高水準言語の構造を MASMアセンブリ で再構築
  • オブジェクト指向、例外、クロージャ、コルーチン、並行処理 などの仕組みを命令単位で解剖
  • Windows の仕様や期待されるvtable構造、ディスパッチの仕組みも詳細に解説

取り扱う主な内容

  • vtableやメソッドディスパッチ、継承 の手作業による実装
  • Windows構造化例外処理(SEH) の命令レベルでの設置・管理
  • Thunk、クロージャ、イテレータ など高階関数的挙動の再現
  • コルーチン、ジェネレータ、ファイバ のHLLコード不使用実装
  • アセンブリレベルでの同期プリミティブ による並行プログラミング
  • Unicode文字列処理 の正しいアプローチ
  • MASM内部でのドメイン固有マクロ言語 の構築

対象読者

  • アセンブリ言語経験者 で、難解な部分をブラックボックスにせず理解したい人
  • Windowsプラットフォーム での低レベルプログラミングに興味を持つ技術者
  • C++、Python、Rust など高水準言語の内部動作に興味を持つ開発者

著者 Randall Hydeについて

  • 医療機器、原子力システム、組み込みハードウェア 向けアセンブリ開発歴数十年
  • 大学でのアセンブリ言語教育経験
  • 代表作:
    • The Art of Assembly Language
    • The Art of ARM Assembly
    • Write Great Code シリーズ(No Starch Press刊)

目次(抜粋)

  • Acknowledgments
  • Introduction
  • Chapter 1: Advanced Macros
  • Chapter 2: Unicode Strings
  • Chapter 3: Transcendental Functions
  • Chapter 4: Advanced Procedures
  • Chapter 5: Concurrent Programming
  • Chapter 6: Object-Oriented Programming With MASM
  • Chapter 7: Exception Handling
  • Chapter 8: Thunks and Closures
  • Chapter 9: Advanced Parameter Implementation
  • Chapter 10: Iterators
  • Chapter 11: Coroutines, Generators, and Fibers
  • Appendix A: ASCII Character Set
  • Appendix B: Glossary
  • Appendix C: Installing and Using Visual Studio
  • Index

特徴と利点

  • AIによる表面的な説明 では得られない、 Windowsが実際に期待する構造逸脱時の問題点 を具体的に解説
  • 高水準言語の便利な機能を、 アセンブリレベルで一から構築
  • 設計上の意思決定 をすべて明示し、ブラックボックスを排除
  • MASMプログラムの内部動作 を徹底的に理解できる構成

関連資料

  • Chapter 1: Advanced Macros のダウンロード提供
  • 詳細目次、索引、著作権ページ も参照可能

Hackerたちの意見

Windowsが実際にvtableをどう期待しているかは分からないけど、vtableのレイアウトはユーザーカーネルABIの一部なの?

そうだね、Itanium ABI(非Win)かMSVC ABIに従う必要があるよ。技術的には、自分のコンパイラが独自の規約を実装するのを止めるものはないけど、それは自分専用のものになるだけだね。

それはMSVC x64 ABIの一部で、カーネルABIの一部ではないよ。カーネルとユーザーモード(Win32)のAPIはすべてCリンクを使っているから、vtableは関係ないし、ABIはOSではなくコンパイラの規約なんだ。実際には、ソフトウェアがWindowsで動くなら、たぶんMSVC ABIを使うことになると思う。

主要なカーネルABIは、安定したABIとしてC関数インターフェースを使ってる(Linuxを除いて、Linuxは安定したインターフェースとしてアセンブリのシステムコール命令を使ってるけど、構造体のレイアウトやスタックのレイアウトなど、C ABIの補助的な部分には依存してる)。C++ ABIについては、実質的に2.5つの主要ABIしかない:MSVC ABIはMSVCとMSVCと互換性を持ちたいclangが使ってるやつ、もう一つはItanium ABIで、その他のすべてに使われてる。Itanium ABIには少しのバリエーションがあって、それが「.5」になる:ARMは例外処理テーブルのレイアウトが違ったり、より圧縮されたvtableレイアウト(64ビットポインタの代わりに32ビットオフセット)を使うためのフラグを設定できたりする。古いABIもあるけど、企業がC++コンパイラの製造をやめたり、Itaniumに切り替えたりしたんだよね。WindowsのCOM API(カーネルの一部ではなく、ユーザースペースのライブラリ)は、C++のvtableと直接互換性があることを目的としたIDLに依存してる。ただ、すべてのABIがvtableレイアウトで合意するような制限されたC++のサブセットも使ってる。関数をオーバーロードしない限り、仮想継承がなければ、ほぼ唯一の健全なvtableレイアウトが存在して、みんなそれを使ってるよ。

ごめん、「AIに聞いてみれば…[でも不完全でひどい仕事になるけど]」って始まって、AIが作ったテキストが100語も続くのはあまり魅力的じゃないね。これが出版社のせいで、著者が自分のまともなものに差し替えてくれることを願ってる。周りで聞いた意見(このスレッドの他の場所も含めて)とは逆に、アセンブラを学ぶことは今でも意味があると思うし、もっと上手くなりたいから、$workがもう少し落ち着いたらこの本か似たような本を考えてみるつもり。

このテキストはAI生成には見えないな。

ごめん、MASM?クールな子たちはみんなNASMかYASMを使ってるよ。

まだFASMが好きな人もいるよ。なんでNASMやYASMなの?

Linuxカーネルは、Cプリプロセッサを使ったGAS(またはclang)を好むみたい。幸運なことに、clangのアセンブラユニットテストのほとんど(およびLLVMのMCレイヤーユニットテスト)もGASスタイルの構文を使ってるよ。

TASM。

アセンブリに関する本のタイトルとしては変だね - x64用で - Windowsで - MASMを使ってるって。64ビットのOSやCPU、アセンブラは他にもあって、実際に使ってる人もいるんだから。

実際にアセンブリでソフトウェアを書いてるなら(単に高レベルなコードベースでホットな関数を最適化するのとは違って)、私の経験ではMASMが一番使いやすいツールだよ。

Hacker Newsで議論の続きを見る