ピタゴラスイッチMIPS版/アセンブラ分離
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[ピタゴラスイッチMIPS版/作業メモ]]
*注意点 [#f993ea00]
flexを2.5.3*から2.5.4にバージョンを落とさないと動かない。
何を言ってるのか(ry
*概要 [#oa111325]
xspimからMIPSのアセンブラ部のみを抜き出し、Xライブラリが使えない環境でも使えるようにする。
*To do [#l8425f7d]
SET_MEMからトレースして、メモリとメモリ内のデータの扱いを把握。~
最終的にメモリの中に入ってるデータをそのまま渡せればいいから、そこさえ把握すればなんとかなる気がする。
----
むしろこれ、dump_mem関数流用すればいいんじゃね……?
*進捗 [#p235f5c4]
とりあえず、プログラムの流れをトレース中...
+scannerで字句解析
+parserで構文解析
+構文解析から、それぞれ対応した動作を実現するための関数へ
--例えば、I命令の時
++inst内で宣言されたi_type_instで、命令が持つ各フィールドを定義し、構造体Instructionに代入。
++それを引数にして、store_instruction関数でメモリ上へ保存する。
+store_instructionでは、メモリのdataセグメントとtextセグメント両方の書込みに対応。
--dataセグメントなら、store_wordでメモリへ
--textセグメントなら、SET_MEM_INSTでメモリへ。
--elseでBUMP_INST_PCとかあるけど、何だろうこれ……
------
要するにメモリに書き込まれる情報を、そのままシミュレータに渡せるようにできれば OKってことだと思われる。store周りがあやしい予感。
------
SET_MEM~はmem.h内に定義されているマクロ。mem用の配列に、引数に応じて書き込む。~
BUMP~はそれぞれcファイル内にマクロ定義。~
----
SET_MEM~はメモリに引数にアドレスと値を持ち、そのアドレスに対応した幅のデータを書き込むというマクロ。
*ファイル構成 [#s53dae3d]
-spim
--read-aout
-spim-utils
--run
---mips-syscall
-inst(命令系の関数)
-mem(メモリ系の関数)
-reg(レジスタ関係の変数)
-sym-tbl
-data
--run
---mips-syscall
--read-aout
-scanner(字句解析)
-parser(構文解析)
-------
CL_SPIM定義時には、clファイルをインクルードする。~
Xライブラリをインクルードしているファイルあり。~
CLって何の略だろ……
*コメント [#n3817795]
- CLはCycle Levelだった気がする。 -- [[大和田]] &new{2009-07-06 (月) 12:43:39};
#comment
終了行:
[[ピタゴラスイッチMIPS版/作業メモ]]
*注意点 [#f993ea00]
flexを2.5.3*から2.5.4にバージョンを落とさないと動かない。
何を言ってるのか(ry
*概要 [#oa111325]
xspimからMIPSのアセンブラ部のみを抜き出し、Xライブラリが使えない環境でも使えるようにする。
*To do [#l8425f7d]
SET_MEMからトレースして、メモリとメモリ内のデータの扱いを把握。~
最終的にメモリの中に入ってるデータをそのまま渡せればいいから、そこさえ把握すればなんとかなる気がする。
----
むしろこれ、dump_mem関数流用すればいいんじゃね……?
*進捗 [#p235f5c4]
とりあえず、プログラムの流れをトレース中...
+scannerで字句解析
+parserで構文解析
+構文解析から、それぞれ対応した動作を実現するための関数へ
--例えば、I命令の時
++inst内で宣言されたi_type_instで、命令が持つ各フィールドを定義し、構造体Instructionに代入。
++それを引数にして、store_instruction関数でメモリ上へ保存する。
+store_instructionでは、メモリのdataセグメントとtextセグメント両方の書込みに対応。
--dataセグメントなら、store_wordでメモリへ
--textセグメントなら、SET_MEM_INSTでメモリへ。
--elseでBUMP_INST_PCとかあるけど、何だろうこれ……
------
要するにメモリに書き込まれる情報を、そのままシミュレータに渡せるようにできれば OKってことだと思われる。store周りがあやしい予感。
------
SET_MEM~はmem.h内に定義されているマクロ。mem用の配列に、引数に応じて書き込む。~
BUMP~はそれぞれcファイル内にマクロ定義。~
----
SET_MEM~はメモリに引数にアドレスと値を持ち、そのアドレスに対応した幅のデータを書き込むというマクロ。
*ファイル構成 [#s53dae3d]
-spim
--read-aout
-spim-utils
--run
---mips-syscall
-inst(命令系の関数)
-mem(メモリ系の関数)
-reg(レジスタ関係の変数)
-sym-tbl
-data
--run
---mips-syscall
--read-aout
-scanner(字句解析)
-parser(構文解析)
-------
CL_SPIM定義時には、clファイルをインクルードする。~
Xライブラリをインクルードしているファイルあり。~
CLって何の略だろ……
*コメント [#n3817795]
- CLはCycle Levelだった気がする。 -- [[大和田]] &new{2009-07-06 (月) 12:43:39};
#comment
ページ名: