OSECPUの仮想CPUの命令セット

リビジョン 0005

ver.0.12

NOP();                      00                           1バイト命令 (no-operation)
LB(im8, im32);              01 [im8] [im32]              6バイト命令 (label)
LIMM(Rxx, im32);            02 [Rxx] [im32]              6バイト命令 (load-immediate)
PLIMM(Pxx, im32);           03 [Pxx] [im32]              6バイト命令 (pointer-load-immediate)
CND(Rxx);                   04 [Rxx]                     2バイトプリフィクス (condition)

LMEM(Rxx, ty32, Pxx); mc    08 [Rxx] [ty32] [Pxx] mc     (8+4n)バイト命令 (load-memory, load-member)
SMEM(Rxx, ty32, Pxx); mc    09 [Rxx] [ty32] [Pxx] mc     (8+4n)バイト命令 (store-memory, store-member)

PADD(Pxx, ty32, Pxx, Rxx);  0E [Pxx] [ty32] [Pxx] [Rxx]  8バイト命令 (pointer-add)
PDIF(Rxx, ty32, Pxx, Pxx);  0F [Rxx] [ty32] [Pxx] [Pxx]  8バイト命令 (pointer-diff)
CP(Rxx, Rxx);               10 [Rxx] [Rxx] FF            4バイト命令 (copy)
OR(Rxx, Rxx, Rxx);          10 [Rxx] [Rxx] [Rxx]         4バイト命令 (or)
XOR(Rxx, Rxx, Rxx);         11 [Rxx] [Rxx] [Rxx]         4バイト命令 (xor)
AND(Rxx, Rxx, Rxx);         12 [Rxx] [Rxx] [Rxx]         4バイト命令 (and)

ADD(Rxx, Rxx, Rxx);         14 [Rxx] [Rxx] [Rxx]         4バイト命令 (add)
SUB(Rxx, Rxx, Rxx);         15 [Rxx] [Rxx] [Rxx]         4バイト命令 (subtract)
MUL(Rxx, Rxx, Rxx);         16 [Rxx] [Rxx] [Rxx]         4バイト命令 (multiply)

SHL(Rxx, Rxx, Rxx);         18 [Rxx] [Rxx] [Rxx]         4バイト命令 (shift-left)
SAR(Rxx, Rxx, Rxx);         19 [Rxx] [Rxx] [Rxx]         4バイト命令 (shift-arithmetic-right)
                            1A [Rxx] [Rxx] [Rxx]         4バイト命令
                            1B [Rxx] [Rxx] [Rxx]         4バイト命令
                            1C [Pxx] [Pxx]               3バイト命令
                            1D [Pxx] [Pxx]               3バイト命令
PCP(Pxx, Pxx);              1E [Pxx] [Pxx]               3バイト命令 (pointer-copy)
                            1F [Pxx] [Pxx] [ty32] [ty32] 11バイト命令
CMPE(Rxx, Rxx, Rxx);        20 [Rxx] [Rxx] [Rxx]         4バイト命令 (compare-equal) (2項目と3項目を比較)
CMPNE(Rxx, Rxx, Rxx);       21 [Rxx] [Rxx] [Rxx]         4バイト命令 (compare-not-equal)
CMPL(Rxx, Rxx, Rxx);        22 [Rxx] [Rxx] [Rxx]         4バイト命令 (compare-less-than)
CMPGE(Rxx, Rxx, Rxx);       23 [Rxx] [Rxx] [Rxx]         4バイト命令 (compare-greater-or-equal)
CMPLE(Rxx, Rxx, Rxx);       24 [Rxx] [Rxx] [Rxx]         4バイト命令 (compare-less-or-equal)
CMPG(Rxx, Rxx, Rxx);        25 [Rxx] [Rxx] [Rxx]         4バイト命令
TSTZ(Rxx, Rxx, Rxx);        26 [Rxx] [Rxx] [Rxx]         4バイト命令
TSTNZ(Rxx, Rxx, Rxx);       27 [Rxx] [Rxx] [Rxx]         4バイト命令
PCMPE(Rxx, Pxx, Pxx);       28 [Rxx] [Pxx] [Pxx]         4バイト命令
PCMPEN(Rxx, Pxx);           28 [Rxx] [Pxx] FF            4バイト命令
PCMPNE(Rxx, Pxx, Pxx);      29 [Rxx] [Pxx] [Pxx]         4バイト命令
PCMPNEN(Rxx, Pxx);          29 [Rxx] [Pxx] FF            4バイト命令
PCMPL(Rxx, Pxx, Pxx);       2A [Rxx] [Pxx] [Pxx]         4バイト命令
PCMPGE(Rxx, Pxx, Pxx);      2B [Rxx] [Pxx] [Pxx]         4バイト命令
PCMPLE(Rxx, Pxx, Pxx);      2C [Rxx] [Pxx] [Pxx]         4バイト命令
PCMPG(Rxx, Pxx, Pxx);       2D [Rxx] [Pxx] [Pxx]         4バイト命令

ver.0.13以降

即値指定のやり方

レジスタの典型的な用法

こめんと欄


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS