
こんにちは。
HEW4を使ってプログラムしています。
意図したとおり動作しないので調べた所、実行順序がおかしいのです。
設定を見直したり、HEWを再インストールしましたが意図した通りに動作しません。
別の環境にインストールしているHEWでコンパイルしたものは正常に動作します。
二つの間の違いはツールチェインのバージョンのみで、動作がおかしい方はバージョンが新しいです。
画像がソースの一部です。
「正常」のソースは上から順にアドレスが増加していますが、「異常」のソースはバラバラになっています。
お手上げ入っています。
何方かわかる方ご教授願います。

No.1ベストアンサー
- 回答日時:
多くのC言語では、コンパイル時に「最適化」と呼ばれる処理を行っています。
これは、書いたコードと同じ処理をする、「よりよい」コードを使って、メモリ効率や実行速度をよくしよう、というものです。
例えば
sum=0;
for(i=1;i<=10;i++) { sum +=i : }
を「ループ最適化」します。
・sum+=i を繰り返している。
・ループ回数は定数で指定されているのて、iの値は固定である。
・他にループ内で行っている処理はない
よって、 ループ終了後の値はコンパイル時に計算できるし、実行時に違う値になることは無い。
↓最適化後のコード
i=11; sum=55;
となります。(他の方法を使う場合もあります)
しかし、「書いた通りに実行して欲しい」という場合に、これだと不具合の元になります。
そこで、最適化のオプションを指定したり、プログラム中に最適化を制御する命令を書いたりします。
HEWは使ったことが無いので、具体的にどのように設定したらよいかまではわかりません。
参考URL:http://csps.hitachi-solutions.co.jp/sh-c/support …
回答有難うございます。
最適化について考えてはいたのですが、設定した覚えも無いのに有効になっていました。
新しいバージョンからデフォルトで設定が変わったのかもしれません。
最適化を無効にして再度コンパイルしてみたところ直りました。
有難うございました。
No.2
- 回答日時:
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ループを途中で抜けたいのですが。
-
入力した数値を倍々するプログラム
-
プログラミングの間違いを…
-
入力した文字列から母音だけを...
-
ループの特定入力終了
-
制御に関するプログラム
-
do-while文が禁止される理由
-
C言語 キーボードで入力された...
-
ゲームオーバーのプログラム
-
HEWのバグ?
-
C言語forループが完結した場合...
-
whileの途中で手続きを変化する...
-
C言語に関する質問
-
break文でループを一気に抜ける...
-
explodeと条件分岐
-
明日試験があります。アルゴリ...
-
if文を使わずに奇数・偶数を判断
-
UWSCにてある一定の動作を無限...
-
__asm int 3でのブレイクポイン...
-
階層型ニューラルネットに準ニ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
do-while文が禁止される理由
-
入力した数値を倍々するプログラム
-
ループを途中で抜けたいのですが。
-
C言語forループが完結した場合...
-
break文でループを一気に抜ける...
-
C言語、whileループを抜け出す...
-
入力した文字列から母音だけを...
-
プログラムで関数は使わない方...
-
For文の終了値を関数にしても問...
-
Cプログラムが終了しない
-
if文の中にfor文なのか、for文...
-
他言語で言うcontinue文
-
文字列を後ろから1文字ずつ表示...
-
if文を使わずに奇数・偶数を判断
-
整定時間
-
for文while文の無限ループの違...
-
excel VBA if文について
-
n重のfor文にするには?
-
特定の文字列が出てくるまでの...
-
VBScriptでSQLに接続し、CSV出...
おすすめ情報