最適化11
フラグレジスタの使われ方を分類してみます。
まずは、フラグを読む場合です。
分岐の条件になる
NVZC
演算命令の入力値になる
C
割り込みの条件
IB
Cフラグだけは、演算の入力値になりえるんですよね。
こんな感じなので、Cフラグだけintで実装して、そのほかのフラグはboolにするっていうのもいいかもしれないですね。
ところで、以下のようなコードをコンパイルした場合、
a=10; a=20;
最初の代入文はコード生成から除外されるのでしょうか?
上のような単純な場合は当然やってくれそうですが、間にたくさん関係のないコードが挟まっていたり、メソッド呼び出しが合った場合はどうでしょうか?
この最適化をコンパイラまかせにできると結構楽なんですけどね。
テストコードを書いて調査してみます。