---
generated_at: 2026-02-17 12:30:00
metrics:
  claims_total: 42
  claims_with_evidence: 42
  claims_without_evidence: 0
confidence_derived: 1.00
---

# 根拠レポート：8-仮想マシン（VM）

## 本レポートについて

### 目的
本レポートは、生成された設計書・ドキュメントの信頼性を検証し、人間レビュアーが効率的にレビューできるようにすることを目的としています。

### チェック方法
以下の観点でドキュメントの内容（Claim：主張）を検証しています：

1. **根拠の有無確認**：各主張に対して、ソースコード・既存設計書・要件定義書などの根拠（Evidence）が存在するか
2. **根拠との整合性**：主張の内容が根拠と矛盾していないか
3. **網羅性**：参照すべき情報源を適切にカバーしているか

### 信頼度スコアの算出
- **confidence_derived** = 根拠あり件数 / 総主張件数
- 状態「○」：根拠あり、「△」：根拠不足または要確認

### 本レポートの使い方
1. まず「サマリー」で全体の信頼度と優先レビュー項目を確認
2. 「Claims と根拠の対応」で △ の項目を重点的にレビュー
3. 「不足情報」で補完が必要な情報源を確認

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**1.00**
  - 根拠あり：42 / 42、根拠なし：0
- 優先レビュー（高）
  1. なし（全て根拠あり）

## 2) 参照した情報（Evidence一覧）
> ここに「実在するもの」だけ列挙。抽出フェーズで付けたIDをそのまま出す。

- E-01: `compiler/vm.nim` - VM実行エンジンメイン
- E-02: `compiler/vmdef.nim` - VM型定義
- E-03: `機能一覧.csv` - 機能定義
- E-04: `compiler/vm.nim` 10-11行目 - モジュール説明コメント
- E-05: `compiler/vmdef.nim` 10-11行目 - モジュール説明コメント
- E-06: `compiler/vmdef.nim` 17行目 - TInstrType定義
- E-07: `compiler/vmdef.nim` 19-24行目 - レジスタビット幅定義
- E-08: `compiler/vmdef.nim` 52-109行目 - TOpcode定義（前半）
- E-09: `compiler/vmdef.nim` 110-187行目 - TOpcode定義（後半）
- E-10: `compiler/vmdef.nim` 192-199行目 - TEvalMode定義
- E-11: `compiler/vmdef.nim` 201-205行目 - TSandboxFlag定義
- E-12: `compiler/vmdef.nim` 221-231行目 - TFullReg定義
- E-13: `compiler/vmdef.nim` 251-281行目 - TCtx定義
- E-14: `compiler/vmdef.nim` 283-291行目 - TStackFrame定義
- E-15: `compiler/vm.nim` 35-65行目 - stackTraceAux関数
- E-16: `compiler/vm.nim` 67-83行目 - stackTraceImpl関数
- E-17: `compiler/vm.nim` 93-127行目 - デコードマクロ
- E-18: `compiler/vm.nim` 289-293行目 - ExceptionGoto定義
- E-19: `compiler/vm.nim` 295-364行目 - findExceptionHandler関数
- E-20: `compiler/vm.nim` 383-481行目 - opConv関数
- E-21: `compiler/vm.nim` 178行目 - vmhooks include

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | VMはレジスタベースの仮想マシン | E-04、E-05 | ○ |
| C-02 | 命令は1-3個のint32で構成 | E-04、E-05 | ○ |
| C-03 | TInstrTypeはuint64 | E-06 | ○ |
| C-04 | regOは8ビット | E-07（20行目） | ○ |
| C-05 | regAは16ビット | E-07（21行目） | ○ |
| C-06 | regBとregCは各16ビット | E-07（22-23行目） | ○ |
| C-07 | regBxは24ビット | E-07（24行目） | ○ |
| C-08 | byteExcess=128で即値エンコード | E-02（26行目） | ○ |
| C-09 | opcEof/opcRetが基本終了命令 | E-08（53-54行目） | ○ |
| C-10 | 代入系オペコード（opcAsgnInt等） | E-08（58-69行目） | ○ |
| C-11 | メモリアクセスオペコード | E-08（71-84行目） | ○ |
| C-12 | 算術演算オペコード | E-08（86-109行目） | ○ |
| C-13 | 制御フローオペコード | E-09（161-169行目） | ○ |
| C-14 | emReplでREPLモード | E-10（193行目） | ○ |
| C-15 | emConstで定数評価 | E-10（194行目） | ○ |
| C-16 | emStaticExprでstatic式評価 | E-10（197行目） | ○ |
| C-17 | allowCastでcast許可 | E-11（202行目） | ○ |
| C-18 | allowInfiniteLoopsで無限ループ許可 | E-11（203行目） | ○ |
| C-19 | TRegisterKindで6種類のレジスタ | E-12（221-222行目） | ○ |
| C-20 | rkNone/rkInt/rkFloat/rkNode/rkRegisterAddr/rkNodeAddr | E-12（222行目） | ○ |
| C-21 | TFullRegはcase object | E-12（223-231行目） | ○ |
| C-22 | TCtxがVMコンテキスト | E-13 | ○ |
| C-23 | code配列で命令を保持 | E-13（252行目） | ○ |
| C-24 | debug配列で行情報を保持 | E-13（253行目） | ○ |
| C-25 | loopIterationsでループ回数管理 | E-13（267行目） | ○ |
| C-26 | TStackFrameでスタックフレーム | E-14 | ○ |
| C-27 | slots配列でレジスタ保持 | E-14（286行目） | ○ |
| C-28 | safePointsで例外ハンドラ管理 | E-14（290行目） | ○ |
| C-29 | stackTraceAuxで再帰的にトレース | E-15 | ○ |
| C-30 | recursionLimitでトレース深さ制限 | E-15（37行目） | ○ |
| C-31 | c.debug[pc]から行情報取得 | E-15（46行目） | ○ |
| C-32 | stackTraceテンプレートでreturn | E-16（80-83行目） | ○ |
| C-33 | ensureKindでレジスタ種別確保 | E-17（93-95行目） | ○ |
| C-34 | decodeBでレジスタBをデコード | E-17（100-102行目） | ○ |
| C-35 | decodeBCでレジスタB/Cをデコード | E-17（104-107行目） | ○ |
| C-36 | decodeBImmで即値をデコード | E-17（113-116行目） | ○ |
| C-37 | ExceptionGotoの3種類 | E-18 | ○ |
| C-38 | ExceptionGotoHandler/Finally/Unhandled | E-18（291-293行目） | ○ |
| C-39 | findExceptionHandlerでハンドラ検索 | E-19 | ○ |
| C-40 | opcExceptチェーンを走査 | E-19（320-352行目） | ○ |
| C-41 | opConvで型変換 | E-20 | ○ |
| C-42 | vmhooksをinclude | E-21 | ○ |

## 4) 不足情報（Unknown / Missing）
- なし（全ての主張に根拠あり）

## 5) リスクフラグ（レビュー観点）
- 0: 低リスク - 全ての主張がソースコードで確認可能

## 6) レビュアーチェックリスト（最小）
- [ ] TFullRegの各レジスタ種別（rkNone〜rkNodeAddr）の役割が正確か確認
- [ ] TOpcode一覧が網羅されているか確認
- [ ] 命令エンコードのビット幅が正確か確認
- [ ] 例外処理（findExceptionHandler）の動作が正確か確認
- [ ] コードリーディングガイドの行番号が現在のソースコードと一致するか確認
- [ ] TEvalModeの各モードの役割が正確か確認

