吉田/日誌/2009-03-03
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[吉田>吉田]]/[[日誌>吉田/日誌]]
つまりはそういうことなんだろうな。
>''[[パルテノンなアレ>第14回ASICデザインコンテスト]]''
この前録った「[[マスク>http://www.amazon.co.jp/%E3%83%9E%E3%82%B9%E3%82%AF-DVD-%E3%83%81%E3%83%A3%E3%83%BC%E3%83%AB%E3%82%BA%E3%83%BB%E3%83%A9%E3%83%83%E3%82%BB%E3%83%AB/dp/B0007LXPLS]]」を横目に作業してたらマイロの可愛さに悶絶。結局始動は観終えてからとか。
_________________________________________________________________________________________
現状改良案(2009年3月3日-01:52)
-[[復習と改良案(Pico16o)>吉田/覚書/復習と改良案(Pico16o)]]
++ループアンローリング。
---全力展開以外の方法を思い付かなければ、、、
++末尾再起展開。
---末尾再起の判定をどうにかしてから。
++スタック命令の最適化。
---スタックポインタ位置の記憶をコンパイラにやらせれん?企画。
---レジスタ退避時に加え引数呼出時もコスト削減できる幸せ大作戦。
今日の足掻き。
-スタック命令の最適化。
-- なんのためにSP用レジスタがあるかを再確認。そーだよねー、、、アセンブラに定数吐いたらもうそこしか読んではくれぬわー。 -- &new{2009-03-03 (火) 02:20:18};
-- 当初予定通りに引数呼出時のaddi,subiの削減を。%%引数呼出時にスタックアドレス値-1の位置をロードする専用命令とか可かね。%% -- &new{2009-03-03 (火) 02:21:18};
-- レジスタ退避において引数は最後なので、引数のストア後の最後のsubi、ロード時の始めのaddiを省略。これでaddisubiなしでargが呼べる。今のところ不具合無し。 -- &new{2009-03-03 (火) 19:44:37};
---スタック操作時のロードストアはr6のPP,MMとセットなのでまとめてそれぞれ1命令で実装、とか。
-ループアンローリング。
-- やりたくはないけど試しに全展開してみた。が、始めの5回くらいIF文読むと無限ループ。どっかの容量超えてるんだろうから探してみる。 -- &new{2009-03-03 (火) 10:57:07};
-- 関係あるかは不明だけど全展開すると190回IF文が発生し、アセンブラもコメント無しで5000行を越える。 -- &new{2009-03-03 (火) 19:39:47};
-末尾再起展開。
-- 再帰判定をyaccで試みる。関数定義時に別ノードに飛ばしその中に関数コールがあればとりあえず再帰はしてる。末尾再帰かは実は判らない。後このままでは使えないので、一度出力をバッファに保存しておいて判定時に関数定義の出力を書き換える、とかで、いけるかねぇ、、、 -- &new{2009-03-03 (火) 19:30:21};
-- これならアセンブラ出力後に最適化する方が楽そう。バッファ退避後並び替えとか、もしできたなら遅延スロットにも応用しようかな。 -- &new{2009-03-03 (火) 20:15:37};
今日の成果。
-引数呼出時のコスト削減(recurのクロック:508→416)
-コンパイラでの大きな改造は出来てあと一つくらいかなとか弱音いてみる。
_________________________________________________________________________________________
#comment
終了行:
[[吉田>吉田]]/[[日誌>吉田/日誌]]
つまりはそういうことなんだろうな。
>''[[パルテノンなアレ>第14回ASICデザインコンテスト]]''
この前録った「[[マスク>http://www.amazon.co.jp/%E3%83%9E%E3%82%B9%E3%82%AF-DVD-%E3%83%81%E3%83%A3%E3%83%BC%E3%83%AB%E3%82%BA%E3%83%BB%E3%83%A9%E3%83%83%E3%82%BB%E3%83%AB/dp/B0007LXPLS]]」を横目に作業してたらマイロの可愛さに悶絶。結局始動は観終えてからとか。
_________________________________________________________________________________________
現状改良案(2009年3月3日-01:52)
-[[復習と改良案(Pico16o)>吉田/覚書/復習と改良案(Pico16o)]]
++ループアンローリング。
---全力展開以外の方法を思い付かなければ、、、
++末尾再起展開。
---末尾再起の判定をどうにかしてから。
++スタック命令の最適化。
---スタックポインタ位置の記憶をコンパイラにやらせれん?企画。
---レジスタ退避時に加え引数呼出時もコスト削減できる幸せ大作戦。
今日の足掻き。
-スタック命令の最適化。
-- なんのためにSP用レジスタがあるかを再確認。そーだよねー、、、アセンブラに定数吐いたらもうそこしか読んではくれぬわー。 -- &new{2009-03-03 (火) 02:20:18};
-- 当初予定通りに引数呼出時のaddi,subiの削減を。%%引数呼出時にスタックアドレス値-1の位置をロードする専用命令とか可かね。%% -- &new{2009-03-03 (火) 02:21:18};
-- レジスタ退避において引数は最後なので、引数のストア後の最後のsubi、ロード時の始めのaddiを省略。これでaddisubiなしでargが呼べる。今のところ不具合無し。 -- &new{2009-03-03 (火) 19:44:37};
---スタック操作時のロードストアはr6のPP,MMとセットなのでまとめてそれぞれ1命令で実装、とか。
-ループアンローリング。
-- やりたくはないけど試しに全展開してみた。が、始めの5回くらいIF文読むと無限ループ。どっかの容量超えてるんだろうから探してみる。 -- &new{2009-03-03 (火) 10:57:07};
-- 関係あるかは不明だけど全展開すると190回IF文が発生し、アセンブラもコメント無しで5000行を越える。 -- &new{2009-03-03 (火) 19:39:47};
-末尾再起展開。
-- 再帰判定をyaccで試みる。関数定義時に別ノードに飛ばしその中に関数コールがあればとりあえず再帰はしてる。末尾再帰かは実は判らない。後このままでは使えないので、一度出力をバッファに保存しておいて判定時に関数定義の出力を書き換える、とかで、いけるかねぇ、、、 -- &new{2009-03-03 (火) 19:30:21};
-- これならアセンブラ出力後に最適化する方が楽そう。バッファ退避後並び替えとか、もしできたなら遅延スロットにも応用しようかな。 -- &new{2009-03-03 (火) 20:15:37};
今日の成果。
-引数呼出時のコスト削減(recurのクロック:508→416)
-コンパイラでの大きな改造は出来てあと一つくらいかなとか弱音いてみる。
_________________________________________________________________________________________
#comment
ページ名: