page0027
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
* 実レジスタ活用
-(by [[K]], 2013.04.20)
** もくてき
-実レジスタを使ったらもっと速くなるんじゃないかという話。
** こうさつ
-(1) x86の32bitモードは、32bitレジスタが8本しかない。しか...
--まずR00-R3F,P00-P1Fへのアクセスのためには、すくなくとも...
---それにシフト演算のときもCLを使う必要がある。
---割り算をするときには、EDXを使う必要がある。
--実はosecpu027aでは、レジスタを結構雑に使っていて、他に...
-(2) いくつかのよく使う仮想レジスタを余った実レジスタに固...
--まあ実際のところは試してみないと分からないんだけど。
-ということで、思いっきりレジスタを節約する方向で考えてみ...
-まず、現在EBP上に展開しているレジスタイメージを、スタッ...
--OSECPUは関数callなどをしても実CPUのスタックにリターンア...
-次にECX/EDXを必要とする命令は少数なので、これを特別扱い...
--こうすれば、ECX/EDXもあく。
-これで結局、EAXとESP以外のレジスタが使えて、ECX/EDXもま...
--おお、これは結構いいんじゃないか?
-(3) この5.5レジスタを、どのように割り振るべきかは意見の...
--やっぱり使用頻度の高いレジスタに割り当てるべきなんだろ...
--というかむしろ発想は逆で、実レジスタに割り当てることに...
--コンパイラとか使う人は、速度が大して重要じゃなくてとに...
---もし速度が出したくなったらそこだけアセンブラで書いてう...
--ということで、こうしてみようかと検討中:
R00 R01 R02 P01 P02 P03
EBX ECX EDX EBP ESI EDI
--実レジスタと仮想レジスタが混ざるとJITコンパイラってどの...
---手抜き:EBX~EDIを一度スタック上に書き戻して従来の処理...
---とりあえずこれをはさめば、少しずつ実レジスタ対応できる。
--やばいなー、なんだか超ワクワクしてきたぞ!(笑)
-他のCPUのことも考えてコメントするとこんな感じ:
--実レジスタに余裕のあるときは、以下の方針でレジスタを実...
--P02,R00,P03,R01,P01,R02,P04,R03,P05,R04,P06,R05...の順...
--ポインタが若干優先されるのは、ポインタアクセスがボトル...
--ポインタは、P02,P03,P01,P04,P05,P06,...の順に割り振りま...
---P01よりもP02やP03が優先されるのは、P01がベースポインタ...
---ペースポインタ上にあるものを頻繁にアクセスする場合は、...
--この方針は推奨されているだけであって義務ではありません。
---実レジスタに余裕があっても、全部メモリ上に割り当てても...
** こめんと欄
-このページにこめんと欄はありません。このページの内容にコ...
終了行:
* 実レジスタ活用
-(by [[K]], 2013.04.20)
** もくてき
-実レジスタを使ったらもっと速くなるんじゃないかという話。
** こうさつ
-(1) x86の32bitモードは、32bitレジスタが8本しかない。しか...
--まずR00-R3F,P00-P1Fへのアクセスのためには、すくなくとも...
---それにシフト演算のときもCLを使う必要がある。
---割り算をするときには、EDXを使う必要がある。
--実はosecpu027aでは、レジスタを結構雑に使っていて、他に...
-(2) いくつかのよく使う仮想レジスタを余った実レジスタに固...
--まあ実際のところは試してみないと分からないんだけど。
-ということで、思いっきりレジスタを節約する方向で考えてみ...
-まず、現在EBP上に展開しているレジスタイメージを、スタッ...
--OSECPUは関数callなどをしても実CPUのスタックにリターンア...
-次にECX/EDXを必要とする命令は少数なので、これを特別扱い...
--こうすれば、ECX/EDXもあく。
-これで結局、EAXとESP以外のレジスタが使えて、ECX/EDXもま...
--おお、これは結構いいんじゃないか?
-(3) この5.5レジスタを、どのように割り振るべきかは意見の...
--やっぱり使用頻度の高いレジスタに割り当てるべきなんだろ...
--というかむしろ発想は逆で、実レジスタに割り当てることに...
--コンパイラとか使う人は、速度が大して重要じゃなくてとに...
---もし速度が出したくなったらそこだけアセンブラで書いてう...
--ということで、こうしてみようかと検討中:
R00 R01 R02 P01 P02 P03
EBX ECX EDX EBP ESI EDI
--実レジスタと仮想レジスタが混ざるとJITコンパイラってどの...
---手抜き:EBX~EDIを一度スタック上に書き戻して従来の処理...
---とりあえずこれをはさめば、少しずつ実レジスタ対応できる。
--やばいなー、なんだか超ワクワクしてきたぞ!(笑)
-他のCPUのことも考えてコメントするとこんな感じ:
--実レジスタに余裕のあるときは、以下の方針でレジスタを実...
--P02,R00,P03,R01,P01,R02,P04,R03,P05,R04,P06,R05...の順...
--ポインタが若干優先されるのは、ポインタアクセスがボトル...
--ポインタは、P02,P03,P01,P04,P05,P06,...の順に割り振りま...
---P01よりもP02やP03が優先されるのは、P01がベースポインタ...
---ペースポインタ上にあるものを頻繁にアクセスする場合は、...
--この方針は推奨されているだけであって義務ではありません。
---実レジスタに余裕があっても、全部メモリ上に割り当てても...
** こめんと欄
-このページにこめんと欄はありません。このページの内容にコ...
ページ名: