[PREV] [NEXT] [INDEX]

【10】仮想CPU命令各論

以下の解説中 [ 00, 0r, 時間 ] は仮想CPU命令のマシンコード 32ビットを 8, 8, 16ビットに分割した値(16進数)を示します. X は任意の16進数,r はレジスタ番号を示します. 詳細は(【9】仮想CPU命令の内部表現)を参照して下さい.

NOOP ノーオペレイション

[ 00, 0r, 時間 ]

[table]

THROW 制御を別のプロセスに渡す

[ 01, 00, 0000 ]

[table]

INC レジスタのインクリメント

[ 08, 0r, 0000 ]

[table]

DEC レジスタのデクリメント

[ 09, 0r, 0000 ]

[table]

演算命令

[ 1X, rr, (データメモリ) ]
[ parameter ]

[table]

分岐命令

[ 2X, 飛び先アドレス(24bit) ]

[table]

CALL 副手続きの呼出し

[ 30, 飛び先アドレス(24bit) ]

[table]

RETURN 副手続きからのリターン

[ 31, 00, 0000 ]

[table]

PUSH レジスタのプッシュ

[ 32, 0r, 0000 ]

[table]

POP レジスタのポップ

[ 33, 0r, 0000 ]

[table]

CLEARA 位置姿勢レジスタのクリア

[ 34, 00, 0000 ]

[table]

PUSHA 位置姿勢レジスタのプッシュ

[ 35, 00, 0000 ]

[table]

POPA 位置姿勢レジスタのポップ

[ 36, 00, 0000 ]

[table]

CLEARG 汎用レジスタのクリア

[ 37, 00, 0000 ]

[table]

PUSHG 汎用レジスタのプッシュ

[ 38, 00, 0000 ]

[table]

POPG 汎用レジスタのポップ

[ 39, 00, 0000 ]

[table]

ENTER スタックフレームの作成

[ 3A, 00, 0000 ]

[table]

LEAVE スタックフレームの解放

[ 3B, 00, 0000 ]

[table]

CALLTB 共有メモリのジャンプテーブルによるサブルーチン呼び出し

[ 3C, rr, 0000 ]

[table]

LOAD ロードレジスタ

[ 40, rr, (データメモリ) ]
([ parameter ])

[table]

LOADM ロードデータメモリ

[ 41, 00, データメモリ ]
[ parameter ]

[table]

XLOAD レジスタ相対ロ-ドレジスタ

[ 42, rr, 0000 ]

[table]

CLOAD ロードレジスタ(共有メモリ)

[ 43, rr, (アドレス) ]

[table]

LOADBP BP相対ロードレジスタ

[ 44, 0r, オフセット ]

[table]

STORE ストアレジスタ

[ 50, Fr, データメモリ ]

[table]

XSTORE レジスタ相対ストアレジスタ

[ 51, rr, 0000 ]

[table]

CSTORE ストアレジスタ(共有メモリ)

[ 52, rr, (アドレス) ]

[table]

STORBP BP相対ストアレジスタ

[ 54, 0r, オフセット ]

[table]

GENPRC プロセスの生成

[ 60, スタート位置(24bit) ]
[ データメモリサイズ ]

[table]

DELPRC プロセスの消滅

[ 61, 00, 0000 ]

[table]

WAIT プロセスの一時停止

[ 62, 00, 0000 ]

[table]

STPALL 全プロセスの停止消滅

[ 63, 00, 0000 ]

[table]

SEND 指定IDのプロセスにメッセージを送出

[ 64, rr, (プロセスID) ]
[ メッセージ ]

[table]

RECEIV メッセージを取得

[ 65, 0r, 0000 ]

[table]

SENDTO 指定プロセスにメッセージを送出

[ 66, rr, (プロセス番号) ]
[ メッセージ ]

[table]

CHILD 子プロセスと子「物体」の生成

[ 67, スタート位置(24bit) ]
[ データメモリサイズ ]
[ 頂点数 ]
[ ポリゴン数 ]

[table]

GRAPHM グラフィックトウインドウを有効に設定

[ 80, 00, 0000 ]

[table]

TEXTM テキストウインドウのみ有効に設定

[ 81, 00, 0000 ]

[table]

BCOLOR 背景色の設定 (0x0000-0x0FFF)

[ 82, 0r, ( 背景色 ) ]

[table]

ZOOM 視野角の設定 (0:90度,1:53度)

[ 83, 0r, (0 or 1) ]

[table]

WIRE 視野角の設定 (0:ポリゴン, 1:ワイヤフレーム)

[ 84, 0r, (0 or 1) ]

[table]

EMIT オブジェクトの発光

[ 88, 0r, (0 or 1) ]

[table]

PARALL 光源の種類の設定

[ 89, 0r, (0 or 1) ]

[table]

INKEY キーコードを指定レジスタに入力

[ 90, 0r, 0000 ]

[table]

RAWKEY キーチェック

[ 91, rr, キーコード ]

[table]

MOUSE マウスチェック

[ 92, 00, 0000 ]

[table]

OUTNUM 数値をテキストウインドウに出力

[ 98, 0r, 0000 ]

[table]

OUTCHR 1文字をテキストウインドウに出力

[ 99, 0r, 文字コード ]

[table]

OUTSTM データメモリの文字列(ASCIIZ)の出力

[ 9A, 0r, 文字列の長さ ]

[table]

OUTSTR 文字列(ASCIIZ)を出力

[ 9B, 00, パラメータ数 ]
[ ch4, ch3, ch2, ch1 ]
[ 0, 0, ch6, ch5 ]

[table]

NOTE MIDI 音階出力

[ 9C, 00, MIDIチャンネル ]
[ 00, 00, Velocity, Note ]

[table]

MIDI MIDIメッセージ出力

[ 9D, 00, MIDIメッセージ ]
[ 00, 00, param2, param1 ]

[table]

MOVx 移動命令

[ Ax, rr, (時間) ]
[ (parameter) ]

[table]

ROTx 回転命令

[ Ax, rr, (時間) ]
([ parameter ])

[table]

MOVALL 同時移動回転命令

[ B0, 0r, 時間 ]

[table]

MOVALH 同時移動回転命令2

[ B1, 0r, 時間 ]

[table]

SCALE 拡大縮小命令

[ B2, 0r, 時間 ]

[table]

SETGRV 重力加速度の設定

[ B8, 0r, (重力加速度) ]

[table]

GETGRV 重力加速度の取得

[ B9, 0r, 0000 ]

[table]

SETACL 加速度の設定

[ BA, 00, 0000 ]

[table]

GETACL 加速度の取得

[ BB, 00, 0000 ]

[table]

SETVEL 速度,角速度の設定

[ BC, 00, 0000 ]

[table]

GETVEL 速度,角速度の取得

[ BD, 00, 0000 ]

[table]

SETWVL 「物体」の速度を世界座標系で設定

[ BE, 00, 0000 ]

[table]

GETWVL 「物体」の速度を世界座標系で取得

[ BF, 00, 0000 ]

[table]

GENOBJ 「物体」の生成

[ C0, 00, 0000 ]
[ 物体の頂点数 ]
[ 物体の面数 ]

[table]

DEFPNT 「物体」の頂点の定義

[ C1, 00, 0000 ]
[ 物体の頂点座標 X ]
[ 物体の頂点座標 Y ]
[ 物体の頂点座標 Z ]

[table]

DEFPLN 「物体」の面の定義

[ C2, 0r, 頂点数 N ]
[ 物体の頂点番号 1 ]
[ 物体の頂点番号 2 ]
[ : ]
[ 物体の頂点番号 N ]

[table]

DELOBJ 「物体」の消滅

[ C3, 00, 0000 ]

[table]

SETEYE 視点の設定

[ C4, 00, 0000 ]

[table]

POINT 「物体」頂点の定義

[ C5, 00, 0000 ]

[table]

スペキュラーの設定 SETREF

[ C6, 0r, (強度) ]

[table]

環境光強度の設定 SETAMB

[ C7, 0r, (強度) ]

[table]

頂点番号の取得 GETVXN

[ C9, 0r, 0000 ]

[table]

PLANE 「物体」の面の定義(データメモリ使用)

[ CA, 0r, 0000 ]

[table]

TRANSP 頂点全体のローカル座標系での平行移動

[ CB, 00, 0000 ]

[table]

UPDTVP 頂点番号ポインタを次の登録頂点とする(相対指定)

[ CC, 00, 0000 ]

[table]

RSETVP 頂点番号ポインタを0に設定(絶対指定)

[ CD, 00, 0000 ]

[table]

SLIDE 頂点登録時の頂点座標オフセットを設定

[ CE, 00, 0000 ]

[table]

HOME 頂点登録時の頂点座標オフセットを解除

[ CF, 00, 0000 ]

[table]

GETPOS 「物体」の位置と姿勢をレジスタに取得

[ D0, 00, 0000 ]

[table]

SETPOS 「物体」の位置と姿勢をレジスタから設定

[ D1, 00, 0000 ]

[table]

PRCPOS 指定したプロセスIDのプロセスの位置と姿勢を取得

[ D2, 0r, (プロセスID) ]

[table]

DISTNC 指定したプロセスIDまでの距離を得る

[ D3, 0r, (プロセスID) ]

[table]

PRIOR ポリゴンの表示優先順位を指定

[ D4, 0r, (オフセット) ]

[table]

RELATV プロセスの「物体」の相対位置と角度をローカル座標系で返す

[ D5, 0r, (プロセスID) ]

[table]

LOOK プロセスの「物体」へのワールド座標系における角度を返す

[ D6, 0r, (プロセスID) ]

[table]

RELAT2 ワールド座標系の座標をローカル座標系からみた値に変換

[ D7, 00, 0000 ]

[table]

FINDVX 「物体」の頂点番号を取得する

[ D8, 00, 0000 ]

[table]

SETVTX 「物体」頂点位置の更新

[ D9, 00, 0000 ]

[table]

GETVTX 「物体」頂点位置の取得

[ DA, 00, 0000 ]

[table]

SETPLN ポリゴンデータの設定

[ DB, 00, 0000 ]

[table]

GETPLN ポリゴンデータの読み出し

[ DC, 00, 0000 ]

[table]

SETSCL 拡大縮小率の設定

[ DD, 00, 0000 ]

[table]

GETSCL 拡大縮小率の取得

[ DE, 00, 0000 ]

[table]

GRNUM 数値をグラフィックウインドウに出力

[ E0, 0r, 0000 ]

[table]

GRCHR 1文字をグラフィックウインドウに出力

[ E1, 00, 文字コード ]

[table]

GRSTM データメモリの文字列をグラフィックウインドウに出力

[ E2, 0r, 文字列の長さ ]

          [ ch4, ch3, ch2, ch1 ]  <--- reg1の示すデータメモリ
          [  0 ,  0 , ch6, ch5 ]
[table]

GRSTR 文字列(ASCIIZ)を出力

        [ E3, 00, パラメータ数 ]
        [ ch4, ch3, ch2, ch1   ]   この例ではパラメータ数2
        [  0 ,  0 , ch6, ch5   ]
[table]

GRCOL 文字色を設定

[ E4, 0r, 文字色 ]

[table]

GRCLR 文字列クリア

[ E5, 00, 0000 ]

[table]

GRSCR 文字列位置(カーソル)の設定

[ E6, 0r, 文字列位置 ]

[table]

GRPOS 文字列位置(カーソル)の取得

[ E7, 0r, 0000 ]

[table]

GRLINE スクリーンにラインを描画

[ E8, 00, 0000 ]

[table]

GRLINC 指定ライン番号のラインの消去

[ E9, 0r, ライン番号 ]

[table]

SYSTIM システム時間の取得

[ F0, 0r, 0000 ]

[table]

SYSCNT システムループ回数の取得

[ F1, 0r, 0000 ]

[table]

SYSPRC 現在のプロセス数の取得

[ F2, 0r, 0000 ]

[table]

DATA 共有メモリに書き込み

        [ F3, 0r, データ数 N ]
        [  データ 1          ]
        [  データ 2          ]
        [      :             ]
        [  データ N          ]
[table]

WRITE 共有メモリをファイルに書き込み

[ F4, 00, パラメータ数 ] この例ではパラメータ数2 [ ch4, ch3, ch2, ch1 ] ファイル名文字列 [ 0 , 0 , ch6, ch5 ]

[table]

READ ファイルを共有メモリに読みだし

[ F5, 00, パラメータ数 ] この例ではパラメータ数2
[ ch4, ch3, ch2, ch1 ] ファイル名文字列
[ 0 , 0 , ch6, ch5 ]

[table]

LIGHT 光源の強度,方向の設定

[ F7, 0r, 0000 ]

[table]

COLNUM シェイディング可能な色数を取得

[ F9, 0r, 0000 ]

[table]

COLWDT 1色あたりのシェイディング段数を取得

[ FA, 0r, 0000 ]

[table]

CNTVTX 総頂点数を取得

[ FB, 0r, 0000 ]

[table]

CNTPLY 総ポリゴン数を取得

[ FC, 0r, 0000 ]

[table]

SETCOL 色の設定

[ FD, 0r, 0000 ]

[table]

RSTCOL 色の初期化

[ FE, 00, 0000 ]

[table]

VER バージョン番号の取得

[ FF, 00, 0000 ]

[table]
[PREV] [NEXT] [INDEX]
ご意見・ご感想は,水谷 純 <mizutani.jun@nifty.ne.jp>まで.