森田/日誌/2009-02-20
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
-To do
--引き続きPICO16oコンパイラの解読。
--(できたら)改良案の検討。
-メモ
--俺的Pnodeの取扱いまとめ
---Const,Ident,Operatorは、それぞれ以下のように宣言されていて以下のようにメモリ領域を使用している。
-------------------------------------------------
|nodeType |データ部(int iとかint valueとか) |
-------------------------------------------------
---参照する際、nodeTypeで参照するときは最初のnodeType部だけ読み込み、ConstやIdentなどの構造体参照のときは構造体ごと読み込み、そこから->で内部データを参照する感じ。
---Pnode型で宣言し、最初にnodeTypeを入れておくことでそれぞれのデータ参照の最初の処理を統一できるのが利点かな?
---nodeTypeを読み込んで、そのnodeTypeに応じて対応した処理に飛ばす。
---同じPnode型で宣言しておきながら、mallocの際には対応した構造体の部分しかメモリ領域を取らないでいいってのは凄いなぁ。やっとunionの使い方がわかった気がする。
--バックエンド部関数まとめ
---アウトプット
rinst2 2オペR形式
rinst1 1オペR形式
iinst I形式
binst 条件付き分岐
jinst 絶対分岐
ldinst ロード命令
stinst ストア命令
comment コメント出力用
---レジスタ関係
reg_table_clear レジスタテーブルのクリア
reg_table_set レジスタテーブルへの情報セットらしい 詳細がよくわからんので保留
search_id レジスタテーブルから変数検索
search_const レジスタテーブルから即値検索
release_reg レジスタ解放 参照回数が低いレジスタ調べて解放後、そのレジスタ番号をリターン
---他
sinit スタックポインタ初期化
---ノード解析関数
レジスタ確保部と、ノード解析部に分けられる
・レジスタ確保部
regとregxに使用するレジスタ番号が格納される
使用してないレジスタがあれば、そこを使用する。
すべてのレジスタが使用中ならば、release_regを行いレジスタを確保する。
・ノード解析部
*Const型
*Ident型
*Operator型
--Reginfoの宣言どこだろう?
#comment
終了行:
-To do
--引き続きPICO16oコンパイラの解読。
--(できたら)改良案の検討。
-メモ
--俺的Pnodeの取扱いまとめ
---Const,Ident,Operatorは、それぞれ以下のように宣言されていて以下のようにメモリ領域を使用している。
-------------------------------------------------
|nodeType |データ部(int iとかint valueとか) |
-------------------------------------------------
---参照する際、nodeTypeで参照するときは最初のnodeType部だけ読み込み、ConstやIdentなどの構造体参照のときは構造体ごと読み込み、そこから->で内部データを参照する感じ。
---Pnode型で宣言し、最初にnodeTypeを入れておくことでそれぞれのデータ参照の最初の処理を統一できるのが利点かな?
---nodeTypeを読み込んで、そのnodeTypeに応じて対応した処理に飛ばす。
---同じPnode型で宣言しておきながら、mallocの際には対応した構造体の部分しかメモリ領域を取らないでいいってのは凄いなぁ。やっとunionの使い方がわかった気がする。
--バックエンド部関数まとめ
---アウトプット
rinst2 2オペR形式
rinst1 1オペR形式
iinst I形式
binst 条件付き分岐
jinst 絶対分岐
ldinst ロード命令
stinst ストア命令
comment コメント出力用
---レジスタ関係
reg_table_clear レジスタテーブルのクリア
reg_table_set レジスタテーブルへの情報セットらしい 詳細がよくわからんので保留
search_id レジスタテーブルから変数検索
search_const レジスタテーブルから即値検索
release_reg レジスタ解放 参照回数が低いレジスタ調べて解放後、そのレジスタ番号をリターン
---他
sinit スタックポインタ初期化
---ノード解析関数
レジスタ確保部と、ノード解析部に分けられる
・レジスタ確保部
regとregxに使用するレジスタ番号が格納される
使用してないレジスタがあれば、そこを使用する。
すべてのレジスタが使用中ならば、release_regを行いレジスタを確保する。
・ノード解析部
*Const型
*Ident型
*Operator型
--Reginfoの宣言どこだろう?
#comment
ページ名: