page0013
の編集
http://osecpu.osask.jp/wiki/?page0013
[
トップ
] [
編集
|
差分
|
バックアップ
|
添付
|
リロード
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
-- 雛形とするページ --
BracketName
FormattingRules
FrontPage
Fulyn
Fulyn-v2
Fulyn_Samples
Help
InterWiki
InterWikiName
InterWikiSandBox
K
KOR_PIT8254
KWVM.NET
Liva
MANA
MenuBar
OSECPU_FPGA
PG_MANA
PHP
PukiWiki
PukiWiki/1.4
PukiWiki/1.4/Manual
PukiWiki/1.4/Manual/Plugin
PukiWiki/1.4/Manual/Plugin/A-D
PukiWiki/1.4/Manual/Plugin/E-G
PukiWiki/1.4/Manual/Plugin/H-K
PukiWiki/1.4/Manual/Plugin/L-N
PukiWiki/1.4/Manual/Plugin/O-R
PukiWiki/1.4/Manual/Plugin/S-U
PukiWiki/1.4/Manual/Plugin/V-Z
RecentDeleted
SandBox
WikiEngines
WikiName
WikiWikiWeb
YukiWiki
hikalium
hikarupsp
hikarupsp_ELCHNOS
hikarupsp_ELCHNOS_IDE
hikarupsp_FrontEndCode
hikarupsp_WebCPU-VM
hikarupsp_WebCPU-VM_internal
hikarupsp_study_hh4
impressions
impressions0000
jpag0000
jpag0001
jpag0002
jpag0003
jpag0004
jpag0005
lambdalice
mandel59
members
memo0000
memo0001
memo0002
memo0003
memo0004
memo0005
memo0006
memo0007
memo0008
memo0009
memo0010
osask
osecpu4android
page0000
page0001
page0002
page0003
page0004
page0005
page0006
page0007
page0008
page0009
page0010
page0011
page0012
page0013
page0014
page0015
page0016
page0017
page0018
page0019
page0020
page0021
page0022
page0023
page0024
page0025
page0026
page0027
page0028
page0029
page0030
page0031
page0032
page0033
page0034
page0035
page0036
page0037
page0038
page0039
page0040
page0041
page0042
page0043
page0044
page0045
page0046
page0047
page0048
page0049
page0050
page0051
page0052
page0053
page0054
page0055
page0056
page0057
page0058
page0059
page0060
page0061
page0062
page0063
page0064
page0065
page0066
page0067
page0068
page0069
page0070
page0071
page0072
page0073
page0074
page0075
page0076
page0077
page0078
page0079
page0080
page0081
page0082
page0083
page0084
page0085
page0086
page0087
page0088
page0089
page0090
page0091
page0092
page0093
page0094
page0095
page0096
page0097
page0098
page0099
page0100
page0101
page0102
page0103
page0104
page0105
page0106
page0107
page0108
page0109
pagenames
populars
seccamp2013
seccamp2014
seccamp2017
ttwilb
ttwilb-asmi
yao
* OSECPUの仮想CPUの命令セット -(by [[K]], 2013.03.26) * リビジョン 0003 ** ver.0.07 NOP 00 1バイト命令 LABEL im32 01 00 [im32] 6バイト命令 LOADINT Rxx, im32 02 [Rxx] [im32] 6バイト命令 LOADLBL Pxx, im32 03 [Pxx] [im32] 6バイト命令 COND Rxx 04 [Rxx] 2バイトプリフィクス READINT Rxx, ty32, Pxx, mc 08 [Rxx] [ty32] [Pxx] mc (8+4n)バイト命令 WRITINT Rxx, ty32, Pxx, mc 09 [Rxx] [ty32] [Pxx] mc (8+4n)バイト命令 ADDPTR Pxx, ty32, Pxx, Rxx 0E [Pxx] [ty32] [Pxx] [Rxx] 8バイト命令 DIFFPTR Rxx, ty32, Pxx, Pxx 0F [Rxx] [ty32] [Pxx] [Pxx] 8バイト命令 COPYINT Rxx, Rxx 10 [Rxx] [Rxx] FF 4バイト命令 ORINT Rxx, Rxx, Rxx 10 [Rxx] [Rxx] [Rxx] 4バイト命令 XORINT Rxx, Rxx, Rxx 11 [Rxx] [Rxx] [Rxx] 4バイト命令 ANDINT Rxx, Rxx, Rxx 12 [Rxx] [Rxx] [Rxx] 4バイト命令 ADDINT Rxx, Rxx, Rxx 14 [Rxx] [Rxx] [Rxx] 4バイト命令 SUBINT Rxx, Rxx, Rxx 15 [Rxx] [Rxx] [Rxx] 4バイト命令 MULINT Rxx, Rxx, Rxx 16 [Rxx] [Rxx] [Rxx] 4バイト命令 18 [Rxx] [Rxx] [Rxx] 4バイト命令 19 [Rxx] [Rxx] [Rxx] 4バイト命令 1A [Rxx] [Rxx] [Rxx] 4バイト命令 1B [Rxx] [Rxx] [Rxx] 4バイト命令 1C [Pxx] [Pxx] 3バイト命令 1D [Pxx] [Pxx] 3バイト命令 COPYPTR Pxx, Pxx 1E [Pxx] [Pxx] 3バイト命令 1F [Pxx] [Pxx] [ty32] [ty32] 11バイト命令 COMPE Rxx, Rxx, Rxx 20 [Rxx] [Rxx] [Rxx] 4バイト命令 (2項目と3項目を比較) COMPNE Rxx, Rxx, Rxx 21 [Rxx] [Rxx] [Rxx] 4バイト命令 COMPL Rxx, Rxx, Rxx 22 [Rxx] [Rxx] [Rxx] 4バイト命令 COMPGE Rxx, Rxx, Rxx 23 [Rxx] [Rxx] [Rxx] 4バイト命令 COMPLE Rxx, Rxx, Rxx 24 [Rxx] [Rxx] [Rxx] 4バイト命令 COMPG Rxx, Rxx, Rxx 25 [Rxx] [Rxx] [Rxx] 4バイト命令 TESTZ Rxx, Rxx, Rxx 26 [Rxx] [Rxx] [Rxx] 4バイト命令 TESTNZ Rxx, Rxx, Rxx 27 [Rxx] [Rxx] [Rxx] 4バイト命令 COMPPE Rxx, Pxx, Pxx 28 [Rxx] [Pxx] [Pxx] 4バイト命令 COMPPEN Rxx, Pxx 28 [Rxx] [Pxx] FF 4バイト命令 COMPPNE Rxx, Pxx, Pxx 29 [Rxx] [Pxx] [Pxx] 4バイト命令 COMPPNEN Rxx, Pxx 29 [Rxx] [Pxx] FF 4バイト命令 COMPPL Rxx, Pxx, Pxx 2A [Rxx] [Pxx] [Pxx] 4バイト命令 COMPPGE Rxx, Pxx, Pxx 2B [Rxx] [Pxx] [Pxx] 4バイト命令 COMPPLE Rxx, Pxx, Pxx 2C [Rxx] [Pxx] [Pxx] 4バイト命令 COMPPG Rxx, Pxx, Pxx 2D [Rxx] [Pxx] [Pxx] 4バイト命令 -整数レジスタ番号Rxxはすべて1バイトで記述(ただし0~63までしか指定できない) -im32はビッグエンディアンで書きます(x86とは逆になって、バイナリダンプで読みやすい順序に) ** ver.0.08以降 -05: ? -06: ? -07: ? -0A: READPTR Pxx, typ32, Pxx, membchain -0B: WRITPTR Pxx, typ32, Pxx, membchain -0C: LOADEA Pxx, typ32, Pxx, membchain -0D: 0D [imm8] アサートレベル指定 -18: SHL, SAR, DIV, MOD -1C: LMTPTR0 Pxx, Pxx -1D: LMTPTR1 Pxx, Pxx -1F: CASTPTR Pxx, Pxx, typ32, typ32 ** 特別なレジスタ -R30~R3F : 定数が入っていることが期待される。これらのレジスタに対して演算命令で結果を格納することはできない。LOADINT以外では代入できない。 -R3C~R3F : 一時定数レジスタ --このレジスタの値は短期間で使う。つまり関数内で保存とかしなくていい。多分割り込みやタスクスイッチでも保存されない(註:OSECPUでは割り込みやタスクスイッチが起きる場所が限定されているのでこんな仕様でも全く問題ない)。 --JITCがこの代入コードを生成しないこともありうる。 -R2F : COMPcc命令の際に結果を格納することだけできるレジスタ。もちろんCOMPcc命令では、R00~R2Eに結果を入れることもできる。 --COMPcc(R2F,R??,R??); COND(R2F); LOADLBL(P00, ????????); という慣用句で使う。 --R2Fは他の使い方を許されていない。実際にはR2Fに値は格納されていない場合もある(JITの仕様による)。 ---この場合CMP+Jccに変換されている。 -P00 : プログラムカウンタ --ここへラベル値を代入するとそれがジャンプ命令となる。 -P01 : スタックフレームのポインタ ** こめんと欄 -このページにこめんと欄はありません。このページの内容にコメントしたいときは[[impressions]]にお願いします。
タイムスタンプを変更しない
* OSECPUの仮想CPUの命令セット -(by [[K]], 2013.03.26) * リビジョン 0003 ** ver.0.07 NOP 00 1バイト命令 LABEL im32 01 00 [im32] 6バイト命令 LOADINT Rxx, im32 02 [Rxx] [im32] 6バイト命令 LOADLBL Pxx, im32 03 [Pxx] [im32] 6バイト命令 COND Rxx 04 [Rxx] 2バイトプリフィクス READINT Rxx, ty32, Pxx, mc 08 [Rxx] [ty32] [Pxx] mc (8+4n)バイト命令 WRITINT Rxx, ty32, Pxx, mc 09 [Rxx] [ty32] [Pxx] mc (8+4n)バイト命令 ADDPTR Pxx, ty32, Pxx, Rxx 0E [Pxx] [ty32] [Pxx] [Rxx] 8バイト命令 DIFFPTR Rxx, ty32, Pxx, Pxx 0F [Rxx] [ty32] [Pxx] [Pxx] 8バイト命令 COPYINT Rxx, Rxx 10 [Rxx] [Rxx] FF 4バイト命令 ORINT Rxx, Rxx, Rxx 10 [Rxx] [Rxx] [Rxx] 4バイト命令 XORINT Rxx, Rxx, Rxx 11 [Rxx] [Rxx] [Rxx] 4バイト命令 ANDINT Rxx, Rxx, Rxx 12 [Rxx] [Rxx] [Rxx] 4バイト命令 ADDINT Rxx, Rxx, Rxx 14 [Rxx] [Rxx] [Rxx] 4バイト命令 SUBINT Rxx, Rxx, Rxx 15 [Rxx] [Rxx] [Rxx] 4バイト命令 MULINT Rxx, Rxx, Rxx 16 [Rxx] [Rxx] [Rxx] 4バイト命令 18 [Rxx] [Rxx] [Rxx] 4バイト命令 19 [Rxx] [Rxx] [Rxx] 4バイト命令 1A [Rxx] [Rxx] [Rxx] 4バイト命令 1B [Rxx] [Rxx] [Rxx] 4バイト命令 1C [Pxx] [Pxx] 3バイト命令 1D [Pxx] [Pxx] 3バイト命令 COPYPTR Pxx, Pxx 1E [Pxx] [Pxx] 3バイト命令 1F [Pxx] [Pxx] [ty32] [ty32] 11バイト命令 COMPE Rxx, Rxx, Rxx 20 [Rxx] [Rxx] [Rxx] 4バイト命令 (2項目と3項目を比較) COMPNE Rxx, Rxx, Rxx 21 [Rxx] [Rxx] [Rxx] 4バイト命令 COMPL Rxx, Rxx, Rxx 22 [Rxx] [Rxx] [Rxx] 4バイト命令 COMPGE Rxx, Rxx, Rxx 23 [Rxx] [Rxx] [Rxx] 4バイト命令 COMPLE Rxx, Rxx, Rxx 24 [Rxx] [Rxx] [Rxx] 4バイト命令 COMPG Rxx, Rxx, Rxx 25 [Rxx] [Rxx] [Rxx] 4バイト命令 TESTZ Rxx, Rxx, Rxx 26 [Rxx] [Rxx] [Rxx] 4バイト命令 TESTNZ Rxx, Rxx, Rxx 27 [Rxx] [Rxx] [Rxx] 4バイト命令 COMPPE Rxx, Pxx, Pxx 28 [Rxx] [Pxx] [Pxx] 4バイト命令 COMPPEN Rxx, Pxx 28 [Rxx] [Pxx] FF 4バイト命令 COMPPNE Rxx, Pxx, Pxx 29 [Rxx] [Pxx] [Pxx] 4バイト命令 COMPPNEN Rxx, Pxx 29 [Rxx] [Pxx] FF 4バイト命令 COMPPL Rxx, Pxx, Pxx 2A [Rxx] [Pxx] [Pxx] 4バイト命令 COMPPGE Rxx, Pxx, Pxx 2B [Rxx] [Pxx] [Pxx] 4バイト命令 COMPPLE Rxx, Pxx, Pxx 2C [Rxx] [Pxx] [Pxx] 4バイト命令 COMPPG Rxx, Pxx, Pxx 2D [Rxx] [Pxx] [Pxx] 4バイト命令 -整数レジスタ番号Rxxはすべて1バイトで記述(ただし0~63までしか指定できない) -im32はビッグエンディアンで書きます(x86とは逆になって、バイナリダンプで読みやすい順序に) ** ver.0.08以降 -05: ? -06: ? -07: ? -0A: READPTR Pxx, typ32, Pxx, membchain -0B: WRITPTR Pxx, typ32, Pxx, membchain -0C: LOADEA Pxx, typ32, Pxx, membchain -0D: 0D [imm8] アサートレベル指定 -18: SHL, SAR, DIV, MOD -1C: LMTPTR0 Pxx, Pxx -1D: LMTPTR1 Pxx, Pxx -1F: CASTPTR Pxx, Pxx, typ32, typ32 ** 特別なレジスタ -R30~R3F : 定数が入っていることが期待される。これらのレジスタに対して演算命令で結果を格納することはできない。LOADINT以外では代入できない。 -R3C~R3F : 一時定数レジスタ --このレジスタの値は短期間で使う。つまり関数内で保存とかしなくていい。多分割り込みやタスクスイッチでも保存されない(註:OSECPUでは割り込みやタスクスイッチが起きる場所が限定されているのでこんな仕様でも全く問題ない)。 --JITCがこの代入コードを生成しないこともありうる。 -R2F : COMPcc命令の際に結果を格納することだけできるレジスタ。もちろんCOMPcc命令では、R00~R2Eに結果を入れることもできる。 --COMPcc(R2F,R??,R??); COND(R2F); LOADLBL(P00, ????????); という慣用句で使う。 --R2Fは他の使い方を許されていない。実際にはR2Fに値は格納されていない場合もある(JITの仕様による)。 ---この場合CMP+Jccに変換されている。 -P00 : プログラムカウンタ --ここへラベル値を代入するとそれがジャンプ命令となる。 -P01 : スタックフレームのポインタ ** こめんと欄 -このページにこめんと欄はありません。このページの内容にコメントしたいときは[[impressions]]にお願いします。
テキスト整形のルールを表示する