[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]

PNTUV 「物体」頂点の定義(UV座標付き)

 [ 46, 00, 0000 ]
[table]

DEFPNT 「物体」の頂点の定義(UV座標付き)

 [ 47, 00, 0000 ]
 [ 物体の頂点座標 X ]
 [ 物体の頂点座標 Y ]
 [ 物体の頂点座標 Z ]
 [ 物体の頂点座標 U ]
 [ 物体の頂点座標 V ]
[table]

TXFILE テクスチャビットマップファイル読み込み

 [ 48, テクスチャファイル番号, 文字パラメータ数 ] 
 [ ch4, ch3, ch2, ch1 ] (ファイル名文字列)
 [ 0 , 0 , ch6, ch5 ]
[table]

TXSET テクスチャ指定

 [ 49, 0r, (テクスチャ番号) ]
[table]

TXAXIS テクスチャ貼り付け軸の指定

 [ 4A, 0r, (0, 1, or 2) ]
[table]

TXALPH テクスチャの透明度の指定

 [ 4B, 0r, (0_100) ]
[table]

TXSCAL テクスチャの拡大率の指定

 [ 4C, rr, (ScaleU) ]
 [  ( ScaleV )  ] 
[table]

TXCHG テクスチャの変更

 [ 4D, rr, (テクスチャ番号) ]
 [ (テクスチャファイル番号) ]
[table]

TXMAP テクスチャのマッピング方法の指定

 [ 4E, 0r, (0_255) ]
[table]

TXBIAS テクスチャ座標のオフセットの設定

 [ 4F, rr, (U座標) ] 
 [  (V座標)  ]
[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]

NEAR 近面クリップ位置の指定

   [ 85, 0r, (近面)]
[table]

FAR 遠面クリップ位置の指定

   [ 86, 0r, (遠面)]
[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>まで.