Assembler 実務教材ハブ(別ページ)

教材の主軸は x86-64 + QEMU + GDB。その上で ARM64 / RISC-V 比較、Renode + AVR の組み込み実習、レガシー文化理解を後置します。

  • 主軸: x86-64、ABI、逆アセンブル、割り込み、メモリマップ
  • 比較: ARM64 / RISC-V
  • 組み込み: Renode + AVR(MMIO、UART、タイマ、割り込み)
  • レガシー編: 8086 / Z80 / 6502 / IBM HLASM(文化理解)

推奨ロードマップ

Phase 0: 土台

  • 2進/16進、符号、レジスタ、フラグ、スタック、エンディアン
  • フェッチ/デコード/実行、アドレッシングモード

Phase 1: x86-64 入門

  • MOV/ADD/SUB/CMP/JMP、分岐、関数、syscall
  • 配列/ポインタ/文字列/構造体の機械語視点

Phase 2: GDB/逆アセンブル

  • break/stepi/disassemble/watch
  • コア解析、GDB/MI 基礎

Phase 3: C連携とABI

  • calling convention、引数/戻り値、stack frame
  • inline asm、最適化差分、volatile/clobber

Phase 4: ISA比較

  • x86-64 vs ARM64 vs RISC-V
  • 可変長/固定長命令、load-store、分岐設計

Phase 5: 組み込み

  • MMIO、UART、GPIO、割り込み、初期化コード
  • Renode で検証と自動テスト

到達レベル定義(実務寄り)

  • Level 1: 命令を読める・GDBで追える・分岐/ループを書ける
  • Level 2: C出力アセンブリ読解・ABI説明・stack/register/memory追跡
  • Level 3: クラッシュ解析・逆アセンブル読解・ボトルネック推測
  • Level 4: 小規模ランタイム/ブート実装・MMIO/割り込み理解
  • Level 5: GDB/MI連携・教材自動採点・ISA比較教材設計

教材テンプレート(各章の型)

  1. 目標
  2. 1分理論
  3. 命令一覧
  4. 最小コード
  5. 実行結果
  6. GDB観察ポイント
  7. よくあるバグ
  8. Cとの比較
  9. 演習 + 自動採点

採点は3層

  • 結果採点: 最終レジスタ・メモリ・標準出力
  • 過程採点: 命令数・禁止命令・stack破壊有無
  • 観察採点: ZF/戻りアドレス/引数レジスタ等の理解確認

実務に直結する必須テーマ

  • ABI / calling convention
  • syscall / stack frame
  • disassembly reading
  • debugger usage
  • crash analysis
  • compiler optimizationの影響
  • memory corruption
  • volatile / inline asm
  • MMIO
  • interrupt / exception
  • エミュレータで再現可能な検証

サンプル(x86-64最小)

section .text
global _start
_start:
  mov rax, 1      ; write
  mov rdi, 1      ; stdout
  mov rsi, msg
  mov rdx, msglen
  syscall
  mov rax, 60     ; exit
  xor rdi, rdi
  syscall

section .data
  msg db "hello asm", 10
  msglen equ $-msg

この後に GDB で disassemble とレジスタ変化を観察する構成が効果的です。

このページの位置づけ

このページは教材設計の基準ページです。次段階で、各フェーズを章ページ化し、演習・自動採点・進捗管理を順次実装します。