Files
hakorune/docs/reference/mir/MIR14-SPECIFICATION.md
Selfhosting Dev 81211c22ad feat: MIR Call命令統一Phase 3.1-3.2完了!統一Call実装進行中
 Phase 3.1-3.2実装完了
- build_indirect_call_expressionでCallTarget::Value使用
- print関数をcall_global print()として統一
- build_function_callでemit_unified_call使用
- ExternCall(env.console.log)→Callee::Global(print)完全移行

🏗️ MIR統一基盤構築
- src/mir/definitions/call_unified.rs: 統一定義(297行)
- emit_unified_call()と便利メソッド3種実装
- NYASH_MIR_UNIFIED_CALL=1で段階移行制御
- VM実行器でCallee対応実装済み

📊 進捗状況(26%削減見込み)
- Phase 1-2:  基盤構築完了
- Phase 3.1-3.2:  基本関数統一完了
- Phase 3.3: 🔄 BoxCall統一中
- Phase 4: 📅 Python LLVM(最優先・63%削減)
- Phase 5: 📅 PyVM/VM統一

📚 ドキュメント更新
- CLAUDE.md: テストスクリプト参考集追加
- CURRENT_TASK.md: Phase 3進捗更新
- python-llvm-priority-rationale.md: 優先順位戦略文書化
- mir-call-unification-master-plan.md: スケジュール最新化

🎯 6種類→1種類: Call/BoxCall/PluginInvoke/ExternCall/NewBox/NewClosure → MirCall統一へ

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-24 01:05:44 +09:00

2.8 KiB
Raw Blame History

MIR14 命令セット仕様2025-09-23現在

📊 MIR14とは

MIR14 = Core-13 + UnaryOp

27命令→13命令→14命令という実践的な進化を経て、現在14命令で全実行形態をサポート。

🎯 Core-14命令

基本演算5命令

  1. Const - 定数ロード
  2. BinOp - 二項演算(+,-,*,/,%,&,|,^,<<,>>
  3. UnaryOp - 単項演算(-,!,~)← 14番目の命令
  4. Compare - 比較演算(==,!=,<,<=,>,>=
  5. TypeOp - 型操作check/cast

メモリ2命令

  1. Load - メモリ読み込み
  2. Store - メモリ書き込み

制御4命令

  1. Branch - 条件分岐
  2. Jump - 無条件ジャンプ
  3. Return - 関数リターン
  4. Phi - SSA合流

Box2命令

  1. NewBox - Box生成
  2. BoxCall - Boxメソッド呼び出し

外部1命令

  1. ExternCall - 外部関数呼び出し

Core-14に含まれない命令

Call系拡張統合予定

  • Call - 関数呼び出しCallee型で拡張中
  • PluginInvoke - プラグイン呼び出しBoxCallと統合予定
  • NewClosure - クロージャ生成

レガシー命令(段階的削除)

  • Print - ExternCallに統合
  • Debug - ExternCallに統合
  • Copy - 最適化パス用
  • Nop - 何もしない

高度な機能(オプション)

  • ArrayGet/ArraySet - 配列操作
  • RefGet/RefSet/RefNew - 参照操作
  • WeakRef/Barrier - GC関連
  • FutureNew/FutureSet/Await - 非同期
  • Throw/Catch/Safepoint - 例外処理

📈 命令数の変遷

初期27命令: なんでも入れた状態
  ↓
MIR1313命令: 極限まで削減
  ↓
MIR1414命令: UnaryOp追加で実用的に ← 現在
  ↓
将来: Call統一でさらにシンプルに

🎯 設計原則

  1. 最小限主義: 本当に必要な命令だけ
  2. Box中心: すべてはBoxCallで表現
  3. 段階的拡張: Core-14を基盤に、必要に応じて拡張

📊 実行形態別サポート

命令 Interpreter VM JIT AOT 備考
Core-14 完全サポート
Call系 統合中
レガシー × × 削除予定
高度機能 × × オプション

🚀 今後の方向性

Phase 15.5(現在)

  • Call系6命令を1つに統一ChatGPT5 Pro A++案)
  • MirCall + Calleeで表現力向上

将来

  • Core-14 + MirCallで完全体へ
  • レガシー命令の完全削除
  • 高度機能の選択的サポート

📝 参考文献