トップ | 前 | 次
この項では、仮想マシンがどのようにバイト コードを解析するのかを簡単に説明します。
基本的な実行手順は以下の通りです。
仮想マシンは (ulyvm.exe) コマンド ライン引数を必要としません。bin/data/script ディレクトリ内の init.bin を自動的に実行します。
ロードされたバイト コードは以下を含みます。
コードの種類: 0=指示セット、1=オブジェクト、2=コマンド、3=レジスタ、4=文字、5=数値
コードは以下の指示セットまたはバイトで表された値になります。
NOP = 0x00 CLR = 0x01 ATR = 0x02 HLT = 0x03 PTX = 0x04 ATB = 0x05 JMP = 0x06 JMS = 0x07 RET = 0x08 SUM = 0x09 SBT = 0x0A MLT = 0x0B DIV = 0x0C SKZ = 0x0D SKL = 0x0E SKG = 0x0F SKE = 0x10 SKN = 0x11 RUN = 0x12 IMP = 0x13 REG = 0x14 CLB = 0x15 PTB = 0x16 ENG = 0x17
例 :
コード レイアウト:
コードは値が最初に読み込まれ、その後に指示セットが呼び出されるように編成されています。
例えば:
[スクリプト] REG $0 ATR "Hello" PTX $0 [バイト コード] $0 REG H e l l o ATR $0 PTX
レジスタの内容:
レジスタはその値の情報を以下のように保持します。
[メモリ ダンプ] [0] H [1] e [2] l [3] l [4] o <-- レジスタはバイト位置 4 (文字列 "Hello" の終わり) を格納します [5] PTX
文字列を扱う場合、プログラム カウンタがメモリ位置 [5] に到達すると、仮想マシンはコードの一番上に到達するか、別な指示セットが見つかるまで後ろ方向にトレース バックします。そして、文字列を表示します。
これは仮想マシンを PHP で実装した一つの例です。MBCS の非サポートおよび拡張機能は実装されていないことに注意してください。
UlyVM PHP をダウンロード