jck0ライブラリのバージョン
jck0_v00.c (246行)
- 初期のもっともシンプルなバージョン。
- エラー位置は文頭単位でしか返さない(いわゆるpc0のみ)。
- 変数やラベルは全てグローバルで、ブロック内のローカル変数やローカルラベルのサポートはない。
- 未知の設定命令を無視する機能を持たないのでベンチマークには向かない。
- 内部的には2パスで機械語を生成している。
- サポート命令
- 単純代入
- 二項演算(加算、減算、乗算、AND演算、OR演算、XOR演算)
- $startup
- $return
- $local : ローカル変数宣言
- $temp : ローカル変数宣言(最適化によって消されてもよい)
- $label : ラベル宣言
- $if ~ $goto : 条件分岐
- $goto
- $call
- $db : バイト列を単純出力(主にデバッグ用)
- サポートしている型
jck0_v01.c (254行)
- v00に未知の設定命令を無視する機能と、pc1のサポートを追加。
- しかしpc1のサポートは形式的なものであって、エラートークンを指しているわけではなく、pc0と同じところを指してしまう。
- しかしとにかく、この機能によって最新版との互換性を保ちやすくなった。
- ベンチマークもできる。
- さらに二項演算子として、除算と剰余算を追加。
jck0_v02 (557行)
- v01からかなり改良を加えたバージョン。
- 高速なコードを生成するし、コンパクトな機械語を生成する。
- 内部的には3パスになっている。
- ローカルラベル、ブロック内のローカル変数に対応。→参考:page0015
- 追加された命令
- $reg
- $option (0と1)
- $dev : 変数のundef
- $del : ラベルのundef