|
|||||||||||||||||||||||||||||||||||||||||||
|
はじめに / セットアップ / 対応ブロック一覧 / アーキテクチャ
実行ファイル名は
出力:
現時点のサブコマンドは 3 つです。
json
使いどき
出力例
活用例
stats
出力例
使いどき
|
|||||||||||||||||||||||||||||||||||||||||||
| セクション | 説明 |
|---|---|
cpu: ...
|
ターゲット CPU とその対応機能フラグ |
@sprite_N_x
etc.
|
スプライトの X 座標・Y 座標・向きを表すグローバル変数 |
define void @thread_N
|
hat block を起点とする各スレッドの関数定義 |
| 関数本体 | スレッドの各命令を LLVM IR に変換した結果 |
run
は
default<O3>
最適化パスを適用します。次のオプションが有効です。
| 最適化 | 説明 |
|---|---|
| ループインターリービング | ループの実行順序を最適化 |
| ループベクトル化 | SIMD 命令を使って複数の計算を同時処理 |
| SLP ベクトル化 | 隣接するスカラー演算をベクトル演算にまとめる |
| ループアンロール | ループを展開して分岐オーバーヘッドを削減 |
出力をリダイレクトしてファイルに保存できます。
cargo run -- run my_project.sb3 > output.ll
保存した IR は LLVM ツール群で使えます。
# IR を読みやすくフォーマット
llvm-as output.ll -o output.bc
llvm-dis output.bc -o output_formatted.ll
# ネイティブオブジェクトファイルに変換
llc output.ll -o output.s
読み込みや JSON パースに失敗した場合、原因チェーンをたどって詳細が標準エラー出力に表示されます。失敗箇所によっては JSON のパス、行番号、列番号、周辺コンテキストも確認できます。
Load error: Failed to open SB3 file: `project.sb3`
cause: No such file or directory (os error 2)
指定したパスにファイルが存在しません。パスを確認してください。
Load error: Failed to read as SB3 (ZIP): `project.sb3`
cause: ...
ファイルが有効な ZIP アーカイブではありません。ファイルが破損しているか、
.sb3
形式ではない可能性があります。
project.json
不在エラー
Load error: `project.json` not found in archive: `project.sb3`
ZIP アーカイブ内に
project.json
が見つかりません。有効な
.sb3
ファイルか確認してください。
Load error: Failed to parse `project.json`: `project.sb3`
Path: .targets[0].blocks[blockId_xxx]
Location: line 42, column 15
Context:
41 | "inputs": {
42 | "NUM": [1, "invalid
^
Path:
: パースが失敗した JSON パス。どのブロックで問題が起きたかを示します
Location:
:
project.json
内の正確な行・列番号
Context:
: 周辺テキストとエラー位置を示す
^
記号
Parse error: invalid opcode: looks_sayforsecs: target[0].blocks[blockId_xxx]
プロジェクトに含まれる opcode がまだパーサーに実装されていません。 対応ブロック一覧 で対応状況を確認してください。
| やりたいこと | 推奨コマンド |
|---|---|
| ファイルが正しく読めるか確認 |
json
|
| どんなブロックが使われているか確認 |
stats
|
| IR 生成できるか確認 |
stats
で opcode を確認後 →
run
|
| Scratch の内部構造を調べる |
json
+
jq
|
| コンパイルパイプラインをデバッグ |
run
|
次は アーキテクチャ を参照してください。