最適化11

フラグレジスタの使われ方を分類してみます。
まずは、フラグを読む場合です。

分岐の条件になる
NVZC

演算命令の入力値になる
C

割り込みの条件
IB

Cフラグだけは、演算の入力値になりえるんですよね。

こんな感じなので、Cフラグだけintで実装して、そのほかのフラグはboolにするっていうのもいいかもしれないですね。

ところで、以下のようなコードをコンパイルした場合、

a=10;
a=20;

最初の代入文はコード生成から除外されるのでしょうか?
上のような単純な場合は当然やってくれそうですが、間にたくさん関係のないコードが挟まっていたり、メソッド呼び出しが合った場合はどうでしょうか?

この最適化をコンパイラまかせにできると結構楽なんですけどね。
テストコードを書いて調査してみます。