page0008
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
* OSECPUの仮想CPUの命令セット
-(by [[K]], 2013.03.19)
* リビジョン 0001
** ver.0.00
NOP 00 1バイト命令
LOADINT Rxx, imm32 02 [Rxx] [imm32] 6バイト命令
COPYINT Rxx, Rxx 06 [Rxx] [Rxx] 3バイト命令
ADDINT Rxx, Rxx, Rxx 14 [Rxx] [Rxx] [Rxx] 4バイト命令
-整数レジスタ番号Rxxはすべて1バイトで記述(ただし0~63ま...
-命令長が可変長であることが分かりにくかったので書き直しま...
--しかし命令フォーマットは数パターンしかありません
-imm32はビッグエンディアンで書きます(x86とは逆になって、...
** ver.0.01
LABEL imm32 01 [imm32] 5バイト命...
LOADLBL Pxx, imm32 03 [Pxx] [imm32] 6バイト命令
COND Rxx 04 [Rxx] 2バイトプ...
CONDN Rxx 05 [Rxx] 2バイトプ...
COMPNE Rxx, Rxx, Rxx 21 [Rxx] [Rxx] [Rxx] 4バイト命令
-COMPNE命令は、2項目と3項目を比較し等しくなければ1項目に-...
** ver.0.02
-20: COMPE
-22: COMPL
-23: COMPGE
-24: COMPG
-25: COMPLE
-26: TESTZ
-27: TESTNZ
-これらは全て3項演算型。つまり、10-1B,20-27はみんな命令フ...
** ver.0.03以降
-07: COPYPTR
-10: OR, XOR, AND, ?,
-14: (ADD), SUB, MUL, ?,
-18: SHL, SAR, DIV, MOD
-08: READINT Rxx, typ32, Pxx, membchain (メモリアクセス)
-09: WRITINT Rxx, typ32, Pxx, membchain
-0A: READPTR Pxx, typ32, Pxx, membchain
-0B: WRITPTR Pxx, typ32, Pxx, membchain
-0C: LOADEA Pxx, typ32, Pxx, membchain
-0D: 0D [imm8] テストコンディション(割り込み受付タイミン...
--これはLABEL命令の前にのみ付けられる
-0E: ADDPTR Pxx, typ32, Pxx, Rxx
-0F: SUBPTR Rxx, typ32, Pxx, Pxx
-28-: COMPPE/NE/L/GE/G/LE Rxx, Pxx, Pxx
-2E: COMPPNE Rxx, Pxx : ヌルポインタに等しい
-2F: COMPPNN Rxx, Pxx : ヌルポインタではない
--ヌルポインタかどうかの判定には、適当なPxxとの比較ではな...
-1C: LMTPTR0 Pxx, Pxx
-1D: LMTPTR1 Pxx, Pxx
-1E: CASTPTR Pxx, Pxx, typ32, typ32 (→0Dへ?)
-1F: 1F [imm8] アサートレベル指定 (→05へ?)
-1E: ? (メモリアクセステストプリフィクス?) これは没方...
** 特別なレジスタ
-R30~R3E : 定数が入っていることが期待される。これらのレ...
-R3C~R3E : 一時定数レジスタ
--このレジスタの値は短期間で使う。つまり関数内で保存とか...
-R3F : COMPcc命令の際に結果を格納することだけできるレジス...
--COMPcc(R3F,R??,R??); COND(R3F); LOADLBL(P00, ????????);...
--R3Fは他の使い方を許されていない。実際にはR3Fに値は格納...
---この場合CMP+Jccに変換されている。
-P00 : プログラムカウンタ
--ここへラベル値を代入するとそれがジャンプ命令となる。
-P01 : スタックフレームのポインタ
** こめんと欄
-このページにこめんと欄はありません。このページの内容にコ...
終了行:
* OSECPUの仮想CPUの命令セット
-(by [[K]], 2013.03.19)
* リビジョン 0001
** ver.0.00
NOP 00 1バイト命令
LOADINT Rxx, imm32 02 [Rxx] [imm32] 6バイト命令
COPYINT Rxx, Rxx 06 [Rxx] [Rxx] 3バイト命令
ADDINT Rxx, Rxx, Rxx 14 [Rxx] [Rxx] [Rxx] 4バイト命令
-整数レジスタ番号Rxxはすべて1バイトで記述(ただし0~63ま...
-命令長が可変長であることが分かりにくかったので書き直しま...
--しかし命令フォーマットは数パターンしかありません
-imm32はビッグエンディアンで書きます(x86とは逆になって、...
** ver.0.01
LABEL imm32 01 [imm32] 5バイト命...
LOADLBL Pxx, imm32 03 [Pxx] [imm32] 6バイト命令
COND Rxx 04 [Rxx] 2バイトプ...
CONDN Rxx 05 [Rxx] 2バイトプ...
COMPNE Rxx, Rxx, Rxx 21 [Rxx] [Rxx] [Rxx] 4バイト命令
-COMPNE命令は、2項目と3項目を比較し等しくなければ1項目に-...
** ver.0.02
-20: COMPE
-22: COMPL
-23: COMPGE
-24: COMPG
-25: COMPLE
-26: TESTZ
-27: TESTNZ
-これらは全て3項演算型。つまり、10-1B,20-27はみんな命令フ...
** ver.0.03以降
-07: COPYPTR
-10: OR, XOR, AND, ?,
-14: (ADD), SUB, MUL, ?,
-18: SHL, SAR, DIV, MOD
-08: READINT Rxx, typ32, Pxx, membchain (メモリアクセス)
-09: WRITINT Rxx, typ32, Pxx, membchain
-0A: READPTR Pxx, typ32, Pxx, membchain
-0B: WRITPTR Pxx, typ32, Pxx, membchain
-0C: LOADEA Pxx, typ32, Pxx, membchain
-0D: 0D [imm8] テストコンディション(割り込み受付タイミン...
--これはLABEL命令の前にのみ付けられる
-0E: ADDPTR Pxx, typ32, Pxx, Rxx
-0F: SUBPTR Rxx, typ32, Pxx, Pxx
-28-: COMPPE/NE/L/GE/G/LE Rxx, Pxx, Pxx
-2E: COMPPNE Rxx, Pxx : ヌルポインタに等しい
-2F: COMPPNN Rxx, Pxx : ヌルポインタではない
--ヌルポインタかどうかの判定には、適当なPxxとの比較ではな...
-1C: LMTPTR0 Pxx, Pxx
-1D: LMTPTR1 Pxx, Pxx
-1E: CASTPTR Pxx, Pxx, typ32, typ32 (→0Dへ?)
-1F: 1F [imm8] アサートレベル指定 (→05へ?)
-1E: ? (メモリアクセステストプリフィクス?) これは没方...
** 特別なレジスタ
-R30~R3E : 定数が入っていることが期待される。これらのレ...
-R3C~R3E : 一時定数レジスタ
--このレジスタの値は短期間で使う。つまり関数内で保存とか...
-R3F : COMPcc命令の際に結果を格納することだけできるレジス...
--COMPcc(R3F,R??,R??); COND(R3F); LOADLBL(P00, ????????);...
--R3Fは他の使い方を許されていない。実際にはR3Fに値は格納...
---この場合CMP+Jccに変換されている。
-P00 : プログラムカウンタ
--ここへラベル値を代入するとそれがジャンプ命令となる。
-P01 : スタックフレームのポインタ
** こめんと欄
-このページにこめんと欄はありません。このページの内容にコ...
ページ名: