最適化9

できればgotoは使いたくなかったんですけど、10倍高速にするためなら、もはや何でもやってみないと厳しい状況ですので、gotoが使える場面では使っていこうと思います。

C#にはgotoあるんですがJavaには無いので、携帯Javaに後で持って行くことを考えると使いたくなかったのです。

Javaの言語仕様にgotoは無いわけですが、JavaVMにはgotoに相当する命令がありますので、最悪、直接classファイルを生成したりすれば何とかなるはずだということにしときます。

静的に飛び先アドレスが確定する分岐命令は、gotoを使うことで今より高速化が可能です。
静的には飛び先が分からない命令は、インダイレクトのJMPと、RTSとRTIぐらいだと思います。
インダイレクトのJMPは、あんまり使う頻度は高くないっぽいので、この最適化を適応できる部分はけっこう多いです。

あとは地味な所の最適化としては、スタック操作が結構多いので、ワード単位でプッシュ、プルするメソッドを作ります。

実行時にならないと何にアクセスするか分からないアドレッシングの場合、アドレスの範囲で何回か条件分岐が入るわけですが、このif文をアクセスの多いデバイス順に判定することで、多少高速化すると思います。
まあ、多分WRAMが一番アクセスが多いんじゃないかと思いますが、実際のゲームを動かして計測してみようと思います。