goto文を恐れなく使う兵達のスレ
■ このスレッドは過去ログ倉庫に格納されています
0559554
NGNGそれでダメだったので553の表現に至ったのです。チビ助チップのクロスコンパイラはそんなもん
>do〜while()では駄目なのだろうか
do whileで書くと「書いたメモリ比較して違ったら」のif文を全部 if( *p++ != xx )の表現で書く
ことになるでしょ。それが翻訳されると CMP Ri,@(Rj+) BEQ 次の実行文 BRA whileの外 という
機械語が出て、BNEwhileの外 という機械語が出なかったのですよ。 それでわざわざ反対に
書いて if( *p++ == xx )で書いてるのです。そうすればコンペアの後BNE whileの外 が出るから。
そのかわりwhileの条件が反対になるから、あ〜いうループ構造になったわけです。
あの書き方が「機械語が最も少ない」出方をするのは「百万回の試行錯誤」で確認済みなのです
■ このスレッドは過去ログ倉庫に格納されています