正直日記



2006/06/02

_ カツカツやがな
今のところコリジョンチェックは総当りでやっていて、敵弾120発と自機、
自機弾16発と敵10体をそれぞれ総当りしても、まあなんとかなってるんだ
けど、いや実は、なんとかなってないので(全方位弾を撃つと処理落ちが
一瞬だけ発生する)なんとかする。なんかガクガクして見えるのは精神的
によくない。

というわけで手っ取り早くなんとかする方法として、判定関数をARM化した
のだが……

THUMBからARMの判定関数を呼び出し、そこから更にTHUMBの関数を呼び出そ
うとしたら止まってしまった。ASM吐かせてみたらblでブランチしてるのな。
longcall属性をつけなきゃいけないようだ。なんか、以前にも似たような
ことを書いた気がする。学習能力無いな俺。

tekezo >
結構前々からの疑問なのですが、
除算のような比較的ランダムに呼びだされる関数以外での
ARM 化でもやっぱり速くなるものなのでしょうか?

ある程度、呼ばれるところが確定している関数については
インライン展開してしまってシーケンシャルアクセスで
持ってくるので十分なのではないかと思っているのですが。
(ARM 化すると呼び出しのオーバーヘッドもかかりますし)。
 (2006/06/03 01:37:09)
>
コードをIWRAMに置くのが目的なのでARM化しています。
IWRAMに置くのにARMステートの方が都合がいいので。
ループがネストしているような、bxのオーバーヘッドが無視できる程度に
長い時間実行される箇所は効果がよく出るんじゃないかな。
 (2006/06/03 03:09:02)

最新
2010 | 01 04
2009 | 01 02 03 04 05 06 07 09 10 11 12
2008 | 01 02 03 04 05 06 07 08 09 10 11 12
2007 | 02 03 04 05 06 07 08 10 11 12
2006 | 01 02 03 04 05 06 07 08 09 10 11 12
2005 | 01 02 03 04 05 06 07 08 09 10 11 12