page0109
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
* さらに小さなフロントエンドコードを目指して
-(by [[K]], 2015.12.01)
** はじめに
-これはrev3の構想のためのメモです。
--現時点での切り分け。
--rev1: JITC型でとにかく作ってみたバージョン
--rev2: rev1での経験を踏まえて今度はインタプリタ型でフロ...
--rev3: さらにフロントエンドコードを改良。でもまだレンジ...
--rev4: ついに究極のレンジコーダ利用のフロントエンドコー...
** このページで何をやりたいのか
-OSECPU-VMのアプリのフロントエンドコードの中には、様々な...
-それをもっと系統的に整理したい。
-関連:
--rev2のフロントエンドバイトコードの仕様:[[page0107]]
** 分かっていること
-絶対値の小さな数値は頻出する。
-負の数は-1を除けばめったに表れない。
-2のベキ数を短くエンコードできると有利。
-10のベキ数も短くエンコードできると有利。
-四則演算ができるとさらに良い。
-レジスタ参照も含める必要がある。
-ビット列を見ると、1か0のどちらかが多い。均等に配分される...
** 案1
-4ビット形式(7通り):
-1, 0, 1, 2, 3, 4, rep0
-8ビット形式(64通り):
--0および正の数(16):0~15
--リピートレジスタ(8):rep0~7
--通常レジスタ(8):R00~0F
--負の数(8):-1~-8
--2のベキ数(8):16,32,64,128,256,512,2^n(n=10~),16^n(n=3...
---2^nのnについて: 4ビット形式の特例: 10,11,13,14,15,17...
--演算(6):ビット反転,積,和,差,xのy乗(x=3~,y=2~),10^(n=3...
--未定(2):
---R3Fを入れる?
-12ビット形式(512通り):
--0および正の数(384):0~383
--通常レジスタ(64):R00~3F
--負の数(32):-1~-32
--未定(32)
---割り算もほしい
-16ビット形式:
--0および正の数(3584):0~3583
--未定(512)
-24ビット形式以降では、0および正の数しかない。
-考察:
--8ビット形式で、リピートレジスタを半減させてしまったのは...
---でもぶっちゃけ、rep8以降の出現率はかなり低そうだから、...
--典型的な数のエンコード例:
---1024は12ビット、65536も12ビット
---100は12ビット、1000や1万も12ビット。1億まで12ビット。
---4億は(10^)(pre-mul)(8)(4)で8+4+4+4=20ビット。rev2と同...
---192は普通に12ビット。
---384は普通に16ビット。
** 案2
-pre-mulは利用頻度が高そうなのでデフォルトで適用する。こ...
--pre-mulがデフォルトではない2のベキを未定に入れる。
** 案3
-いや、ちょっとまて。こんなことがやりたかったわけじゃない...
-数値ごとに利用頻度的なものをうまく定義して、それで上位64...
* こめんと欄
#comment
終了行:
* さらに小さなフロントエンドコードを目指して
-(by [[K]], 2015.12.01)
** はじめに
-これはrev3の構想のためのメモです。
--現時点での切り分け。
--rev1: JITC型でとにかく作ってみたバージョン
--rev2: rev1での経験を踏まえて今度はインタプリタ型でフロ...
--rev3: さらにフロントエンドコードを改良。でもまだレンジ...
--rev4: ついに究極のレンジコーダ利用のフロントエンドコー...
** このページで何をやりたいのか
-OSECPU-VMのアプリのフロントエンドコードの中には、様々な...
-それをもっと系統的に整理したい。
-関連:
--rev2のフロントエンドバイトコードの仕様:[[page0107]]
** 分かっていること
-絶対値の小さな数値は頻出する。
-負の数は-1を除けばめったに表れない。
-2のベキ数を短くエンコードできると有利。
-10のベキ数も短くエンコードできると有利。
-四則演算ができるとさらに良い。
-レジスタ参照も含める必要がある。
-ビット列を見ると、1か0のどちらかが多い。均等に配分される...
** 案1
-4ビット形式(7通り):
-1, 0, 1, 2, 3, 4, rep0
-8ビット形式(64通り):
--0および正の数(16):0~15
--リピートレジスタ(8):rep0~7
--通常レジスタ(8):R00~0F
--負の数(8):-1~-8
--2のベキ数(8):16,32,64,128,256,512,2^n(n=10~),16^n(n=3...
---2^nのnについて: 4ビット形式の特例: 10,11,13,14,15,17...
--演算(6):ビット反転,積,和,差,xのy乗(x=3~,y=2~),10^(n=3...
--未定(2):
---R3Fを入れる?
-12ビット形式(512通り):
--0および正の数(384):0~383
--通常レジスタ(64):R00~3F
--負の数(32):-1~-32
--未定(32)
---割り算もほしい
-16ビット形式:
--0および正の数(3584):0~3583
--未定(512)
-24ビット形式以降では、0および正の数しかない。
-考察:
--8ビット形式で、リピートレジスタを半減させてしまったのは...
---でもぶっちゃけ、rep8以降の出現率はかなり低そうだから、...
--典型的な数のエンコード例:
---1024は12ビット、65536も12ビット
---100は12ビット、1000や1万も12ビット。1億まで12ビット。
---4億は(10^)(pre-mul)(8)(4)で8+4+4+4=20ビット。rev2と同...
---192は普通に12ビット。
---384は普通に16ビット。
** 案2
-pre-mulは利用頻度が高そうなのでデフォルトで適用する。こ...
--pre-mulがデフォルトではない2のベキを未定に入れる。
** 案3
-いや、ちょっとまて。こんなことがやりたかったわけじゃない...
-数値ごとに利用頻度的なものをうまく定義して、それで上位64...
* こめんと欄
#comment
ページ名: