大和田/OCIP
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[大和田]]
*OCIP [#bc90a5c0]
コンピュータ構築設計論で使用した教育用16ビットRISCプロセッサPICO16aの非公認GUIシミュレータ。PICO16aで動くアセンブリプログラムの開発を支援します。
----
#contents
**サポートする命令セット [#c6975a5e]
|命令|動作|使用例|意味|
|NOP|何もしない|NOP|有効な操作は行わない|
|MV|コピー|MV r1, r2|r1 = r2|
|AND|論理積|AND r1, r2|r1 = r1 & r2|
|OR|論理和|OR r1, r2|r1 = r1 | r2|
|XOR|排他的論理和|XOR r1, r2|r1 = r1 @ r2|
|NOT|否定|NOT r1|r1 = ^r1|
|ADD|加算|ADD r1, r2|r1 = r1 + r2|
|SUB|減算|SUB r1, r2|r1 = r1 - r2|
|LD|ロード|LD r1, (r2)|r1 = mem[r2]|
|ST|ストア|ST (r1), r2|mem[r1] = r2|
|SL|左シフト|SL r1, r2|r1 = r1 << 1|
|SR|右シフト|SR r1, r2|r1 = r1 >> 1|
|RFI|割り込みからの復帰|RFI|pc = iar, ienable = 1|
|EINT|割り込み許可|EINT|ienable = 1|
|LIAR|IARをロード|LIAR r1|r1 = iar|
|SIAR|IARにストア|SIAR r1|iar = r1|
|DINT|割り込み禁止|DINT|ienable = 0|
|ANDI|即値論理積(下位8ビットはゼロ拡張)|ANDI r1, #10|r1 = r1 & 10|
|ORI|即値論理和(下位8ビットはゼロ拡張)|ORI r1, #10|r1 = r1 | 10|
|XORI|即値排他的論理和(下位8ビットはゼロ拡張)|XORI r1, #10|r1 = r1 @ 10|
|ADDI|即値加算(上位8ビットは符号拡張)|ADDI r1, #10|r1 = r1 + 10|
|SUBI|即値減算(上位8ビットは符号拡張)|SUBI r1, #10|r1 = r1 - 10|
|JALR|戻り値を保存してレジスタの値に絶対分岐|JALR r1|r7 = pc, pc = r1|
|BNEZ|ゼロでないとき相対分岐|BNEZ r1, -5|if(pc != 0) pc = pc - 5|
|BEQZ|ゼロのとき相対分岐|BEQZ r1, -5|if(pc == 0) pc = pc - 5|
|BMI|負のとき相対分岐|BMI r1, -5|if(pc < 0) pc = pc - 5|
|BPL|正のとき相対分岐(0を含む)|BPL r1, -5|if(pc >= 0) pc = pc - 5|
|JAL|戻り値を保存して相対分岐|JAL -5|r7 = pc, pc = pc - 5|
|JR|レジスタの値に絶対分岐|JR r1|pc = r1|
|JMP|相対分岐|JMP -5|pc = pc - 5|
|LDLI|下位8ビットにロード(上位8ビットは符号拡張)|LDLI r1, 0x10|r1 = 0x00000010|
|LDHI|上位8ビットにロード(下位8ビットはゼロ拡張)|LDHI r2, 0x10|r2 = 0x00100000|
**解説 [#pc40c5cf]
xocipはコンピュータ構築設計論で使用した教育用16ビットRISCプロセッサであるPICO16aのGUIシミュレータとして開発したものです。名前の由来はxspimがMIPSの逆であることから。
xocipは主にMain Control、Setting、VGAの3つのタブウインドウから構成され、起動すると次のようなウインドウが表示されます。
CENTER:&ref(xocip1.png);
***PICO Status [#l0dc24a3]
PICO16a の各種ステータスを表示します。各パラメータは以下の通りです。
|pc|プログラムカウンタ|
|iar|PC のリターンアドレス|
|interrupt enable|割り込みイネーブル信号|
|int_req1|割り込み要求1(タイマ)|
|int_req2|割り込み要求2(KEY3)|
|timer counter|タイマのカウンタの値|
|r0-r7|汎用レジスタ|
|LED Status|LED 表示|
|LCD Status|LCD 表示(ASCIIコードのみ。カタカナ・特殊文字非対応)|
~
CENTER:&ref(xocip2.png);
***Text & Data [#k4cc136e]
アセンブリプログラムをコンパイルした後の命令とデータを、メインメモリに格納した状況を表示します。対応するアセンブリコードとラベルの情報も同時に表示し、現在のプログラムカウンタが示すアドレスを選択状態にします。
CENTER:&ref(xocip3.png);
***Main Memory & IO Memory [#ncfa1a16]
メインメモリとIO のメモリ空間の状況を表示します。コンパイルや命令実行に伴って変更があったデータは赤い色で表示されます。
CENTER:&ref(xocip4.png);
***Assembly Code [#ge2d6e40]
アセンブリプログラムのコードを表示する簡易テキストエディタです。
CENTER:&ref(xocip5.png);
***Log [#r2017377]
シミュレータの動作の状態などを表示します。
CENTER:&ref(xocip6.png);
***PICO操作ボタン [#q79a3d32]
PICO16aを操作するボタンです。各ボタンの動作は以下の通りです。
|KEY3|KEY3割り込みを発生させます。|
|KEY2|未使用|
|KEY1|未使用|
|KEY0|CPUをリセットします。|
|Load|ファイルからアセンブリプログラムを読み込み、コンパイル後メモリにセットします。|
|Run|CPUを動作状態にします。|
|Stop|CPUを停止状態にします。|
|Step|任意のステップ数だけ命令を実行します。|
|Breakpoint|Breakpointの挿入、及び削除を行います。BreakpointはText & Data に*で示されます。CPUはBreakpointが挿入されたアドレス以降は命令の実行を行いません。|
|Clear|CPUとメモリをクリアして、初期状態に戻します。|
|Quit|xocipを終了します。|
~
CENTER:&ref(xocip7.png);
***テキストエディタ操作ボタン [#tbccff78]
Assembly Code領域の簡易テキストエディタを操作するボタンです。各ボタンの動作は以下の通りです。
|New|Assembly Code領域をクリアし、新しいアセンブリプログラムを編集可能にします。|
|Open|既存のアセンブリプログラムを読み込みます。|
|Save|編集中のアセンブリファイルを保存します。既に一度保存、もしくは既存のファイルを読み込んでいるときは、上書き保存します。|
|Assemble|編集中のアセンブリファイルをコンパイルし、メモリにセットします。|
~
CENTER:&ref(xocip8.png);
***xocipのパラメータの変更 [#h11aca71]
ここではシミュレータやPICO16aのパラメータの設定を行います。各パラメータの意味は以下の通りです。
|pasm name|PICO16aアセンブラ(pasm)のファイル名を指定します。起動時の設定ではpasm1k.plになっています。|
|memory size|メインメモリのサイズをword単位の10進数で指定します。起動時の設定では512になっています。|
|interrupt address 1|int_req1(タイマ割り込み)による割り込みアドレスを16進数で指定します。起動時の設定では100になっています。|
|interrupt address 2|int_req2(KEY3割り込み)による割り込みアドレスを16進数で指定します。起動時の設定では180になっています。|
|stack pointer address|スタックポインタアドレスを16進数で指定する。起動時の設定では1ffになっています。|
|VGA horizontal area|VGA表示で表示する水平方向の領域を10進数で指定します。起動時の設定では16になっています。(※)|
|VGA vertical area|VGA表示で表示する垂直方向の領域を10進数で指定します。起動時の設定では10になっています。(※)|
※ VGA表示の領域を限定するのは、命令実行時のデータ書き出しを高速化するため。
CENTER:&ref(xocip9.png);
***VGA(Character Display)表示 [#za62a7f4]
キャラクタディスプレイ(縦×横が最大80×60)のVGA表示の状態を表示します。ただし、表示可能な文字はASCIIコードのみで、カタカナや特殊文字は非対応です。
CENTER:&ref(xocip10.png);
**パスの設定 [#pa8efdb8]
大学の環境で使いたい方はパスの設定をします。~/.cshrcに以下を追加してください。
set path = ( $path /home/course/comporg/bin )
起動コマンドは次のようになります。大学環境では2008年度のコンピュータ構築設計論に合わせた設定が施されたVersion 1.2が動作します。
% xocip
**注意 [#kaa00b65]
-自己責任で使用すること。
-簡易テキストエディタは日本語非対応。
-DE2ボードでの動作を完全に保証するものではない。
-コンパイルできるアセンブリコードのみ動作。
終了行:
[[大和田]]
*OCIP [#bc90a5c0]
コンピュータ構築設計論で使用した教育用16ビットRISCプロセッサPICO16aの非公認GUIシミュレータ。PICO16aで動くアセンブリプログラムの開発を支援します。
----
#contents
**サポートする命令セット [#c6975a5e]
|命令|動作|使用例|意味|
|NOP|何もしない|NOP|有効な操作は行わない|
|MV|コピー|MV r1, r2|r1 = r2|
|AND|論理積|AND r1, r2|r1 = r1 & r2|
|OR|論理和|OR r1, r2|r1 = r1 | r2|
|XOR|排他的論理和|XOR r1, r2|r1 = r1 @ r2|
|NOT|否定|NOT r1|r1 = ^r1|
|ADD|加算|ADD r1, r2|r1 = r1 + r2|
|SUB|減算|SUB r1, r2|r1 = r1 - r2|
|LD|ロード|LD r1, (r2)|r1 = mem[r2]|
|ST|ストア|ST (r1), r2|mem[r1] = r2|
|SL|左シフト|SL r1, r2|r1 = r1 << 1|
|SR|右シフト|SR r1, r2|r1 = r1 >> 1|
|RFI|割り込みからの復帰|RFI|pc = iar, ienable = 1|
|EINT|割り込み許可|EINT|ienable = 1|
|LIAR|IARをロード|LIAR r1|r1 = iar|
|SIAR|IARにストア|SIAR r1|iar = r1|
|DINT|割り込み禁止|DINT|ienable = 0|
|ANDI|即値論理積(下位8ビットはゼロ拡張)|ANDI r1, #10|r1 = r1 & 10|
|ORI|即値論理和(下位8ビットはゼロ拡張)|ORI r1, #10|r1 = r1 | 10|
|XORI|即値排他的論理和(下位8ビットはゼロ拡張)|XORI r1, #10|r1 = r1 @ 10|
|ADDI|即値加算(上位8ビットは符号拡張)|ADDI r1, #10|r1 = r1 + 10|
|SUBI|即値減算(上位8ビットは符号拡張)|SUBI r1, #10|r1 = r1 - 10|
|JALR|戻り値を保存してレジスタの値に絶対分岐|JALR r1|r7 = pc, pc = r1|
|BNEZ|ゼロでないとき相対分岐|BNEZ r1, -5|if(pc != 0) pc = pc - 5|
|BEQZ|ゼロのとき相対分岐|BEQZ r1, -5|if(pc == 0) pc = pc - 5|
|BMI|負のとき相対分岐|BMI r1, -5|if(pc < 0) pc = pc - 5|
|BPL|正のとき相対分岐(0を含む)|BPL r1, -5|if(pc >= 0) pc = pc - 5|
|JAL|戻り値を保存して相対分岐|JAL -5|r7 = pc, pc = pc - 5|
|JR|レジスタの値に絶対分岐|JR r1|pc = r1|
|JMP|相対分岐|JMP -5|pc = pc - 5|
|LDLI|下位8ビットにロード(上位8ビットは符号拡張)|LDLI r1, 0x10|r1 = 0x00000010|
|LDHI|上位8ビットにロード(下位8ビットはゼロ拡張)|LDHI r2, 0x10|r2 = 0x00100000|
**解説 [#pc40c5cf]
xocipはコンピュータ構築設計論で使用した教育用16ビットRISCプロセッサであるPICO16aのGUIシミュレータとして開発したものです。名前の由来はxspimがMIPSの逆であることから。
xocipは主にMain Control、Setting、VGAの3つのタブウインドウから構成され、起動すると次のようなウインドウが表示されます。
CENTER:&ref(xocip1.png);
***PICO Status [#l0dc24a3]
PICO16a の各種ステータスを表示します。各パラメータは以下の通りです。
|pc|プログラムカウンタ|
|iar|PC のリターンアドレス|
|interrupt enable|割り込みイネーブル信号|
|int_req1|割り込み要求1(タイマ)|
|int_req2|割り込み要求2(KEY3)|
|timer counter|タイマのカウンタの値|
|r0-r7|汎用レジスタ|
|LED Status|LED 表示|
|LCD Status|LCD 表示(ASCIIコードのみ。カタカナ・特殊文字非対応)|
~
CENTER:&ref(xocip2.png);
***Text & Data [#k4cc136e]
アセンブリプログラムをコンパイルした後の命令とデータを、メインメモリに格納した状況を表示します。対応するアセンブリコードとラベルの情報も同時に表示し、現在のプログラムカウンタが示すアドレスを選択状態にします。
CENTER:&ref(xocip3.png);
***Main Memory & IO Memory [#ncfa1a16]
メインメモリとIO のメモリ空間の状況を表示します。コンパイルや命令実行に伴って変更があったデータは赤い色で表示されます。
CENTER:&ref(xocip4.png);
***Assembly Code [#ge2d6e40]
アセンブリプログラムのコードを表示する簡易テキストエディタです。
CENTER:&ref(xocip5.png);
***Log [#r2017377]
シミュレータの動作の状態などを表示します。
CENTER:&ref(xocip6.png);
***PICO操作ボタン [#q79a3d32]
PICO16aを操作するボタンです。各ボタンの動作は以下の通りです。
|KEY3|KEY3割り込みを発生させます。|
|KEY2|未使用|
|KEY1|未使用|
|KEY0|CPUをリセットします。|
|Load|ファイルからアセンブリプログラムを読み込み、コンパイル後メモリにセットします。|
|Run|CPUを動作状態にします。|
|Stop|CPUを停止状態にします。|
|Step|任意のステップ数だけ命令を実行します。|
|Breakpoint|Breakpointの挿入、及び削除を行います。BreakpointはText & Data に*で示されます。CPUはBreakpointが挿入されたアドレス以降は命令の実行を行いません。|
|Clear|CPUとメモリをクリアして、初期状態に戻します。|
|Quit|xocipを終了します。|
~
CENTER:&ref(xocip7.png);
***テキストエディタ操作ボタン [#tbccff78]
Assembly Code領域の簡易テキストエディタを操作するボタンです。各ボタンの動作は以下の通りです。
|New|Assembly Code領域をクリアし、新しいアセンブリプログラムを編集可能にします。|
|Open|既存のアセンブリプログラムを読み込みます。|
|Save|編集中のアセンブリファイルを保存します。既に一度保存、もしくは既存のファイルを読み込んでいるときは、上書き保存します。|
|Assemble|編集中のアセンブリファイルをコンパイルし、メモリにセットします。|
~
CENTER:&ref(xocip8.png);
***xocipのパラメータの変更 [#h11aca71]
ここではシミュレータやPICO16aのパラメータの設定を行います。各パラメータの意味は以下の通りです。
|pasm name|PICO16aアセンブラ(pasm)のファイル名を指定します。起動時の設定ではpasm1k.plになっています。|
|memory size|メインメモリのサイズをword単位の10進数で指定します。起動時の設定では512になっています。|
|interrupt address 1|int_req1(タイマ割り込み)による割り込みアドレスを16進数で指定します。起動時の設定では100になっています。|
|interrupt address 2|int_req2(KEY3割り込み)による割り込みアドレスを16進数で指定します。起動時の設定では180になっています。|
|stack pointer address|スタックポインタアドレスを16進数で指定する。起動時の設定では1ffになっています。|
|VGA horizontal area|VGA表示で表示する水平方向の領域を10進数で指定します。起動時の設定では16になっています。(※)|
|VGA vertical area|VGA表示で表示する垂直方向の領域を10進数で指定します。起動時の設定では10になっています。(※)|
※ VGA表示の領域を限定するのは、命令実行時のデータ書き出しを高速化するため。
CENTER:&ref(xocip9.png);
***VGA(Character Display)表示 [#za62a7f4]
キャラクタディスプレイ(縦×横が最大80×60)のVGA表示の状態を表示します。ただし、表示可能な文字はASCIIコードのみで、カタカナや特殊文字は非対応です。
CENTER:&ref(xocip10.png);
**パスの設定 [#pa8efdb8]
大学の環境で使いたい方はパスの設定をします。~/.cshrcに以下を追加してください。
set path = ( $path /home/course/comporg/bin )
起動コマンドは次のようになります。大学環境では2008年度のコンピュータ構築設計論に合わせた設定が施されたVersion 1.2が動作します。
% xocip
**注意 [#kaa00b65]
-自己責任で使用すること。
-簡易テキストエディタは日本語非対応。
-DE2ボードでの動作を完全に保証するものではない。
-コンパイルできるアセンブリコードのみ動作。
ページ名: