無限ループ文がマシン語に変換されない

すリカルドでずるかるドリか

です。でスリカルドdりかるdりかrrik

「リカルドです」と書きたいだけなのに、上記のようになって書けません。
それでテキストエディタに書いて、それをコピーしました。

HEWで、RX621のコンパイル実験をしています。
よく無限ループで while(1) が使われていますが、これだと1と0を比較する命令が入って長くなってしまいます。
他の無限ループだとどのようにマシン語に変換されるのか試してみました。

所が、 goto 文と for(;;) 文がマシン語になりません。どうなっているのでしょう?

最適化は行っていません。目的は、最適化しなくても速く短いプログラムです。

初めはスイッチ文は使わず、無限ループを幾つか並べました。
goto 文と for(;;) 文の前で無限ループに入ってしまうので、最適化レベルゼロでも削除されるのかと思いました。

スイッチ文なら削除されないだろうと思い、スイッチ文にしてみました。
それでも駄目なので、グローバル変数を操作する ++A を入れてみました。
割り込み処理で A を読み書きする事を考えれば、コンパイラは A を無視できないと考えたからです。

このように色々と試したのですが、マシン語になりません。
コンパイラのバグなんでしょうか?

  • リカルドです

    今日、試したら期待通りの表示になりました。

    弄った事と言ったら do {} while (1) ; を do {} while () ; にしてエラーに成る事を確認。

    元に戻してビルド。

    マシン語を表示させようと添付図左上の「混合モードで表示」をクリックしようとしたが灰色で出来ない。

    もう一度ビルドしたが症状変わらず。

    改行を入れファイルを更新してビルド。

    これで、下記の「混合モードで表示」が利くようになりました。

    HEWのバージョンは Version 4.09.01.007 です。