すリカルドでずるかるドリか
です。でスリカルド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 です。