[H8-ML(4642)] Re:H8/3052で浮動小数点演算がうまくできず困っています。
From: Kazutaka "Zak" Sawa <CXJ03106@xxxxxxxxx>
Date: 2004年04月09日(金)02時12分40秒
こんにちは、神戸の澤です。

Sawaguchi Yujiさんが04.4.9 2:00に書きました:
>>でもまさか実際にstaticとは.....
>ちょっと Cygwin の gcc でアセンブラソースを吐かせてみました
>ら、スタックには確保してます。でも、初期値として 0 を代入し
>ていました。
>で、明示的に static と宣言してやると・・・やっぱりスタックに
>確保して 0 を代入してました。なんじゃぁ?
>ちなみに、普通の関数内で宣言した static 変数は別セグメントに
>確保され、static でなければスタック上に確保されて自動的には
>0 で初期化されません。

通常、その別セグメントをリセット直後のコードで初期化するようにしている
んですよね。
しかし、これに関してはコンパイラ自身(リンカorライブラリ?)が初期化し
てるってことですよねぇ。うーむ。


>>なるほどなるほど。でも、そういうCPUの場合の自動変数っていったいどうや
>>って確保してたんでしょうね....。
>>いや、その方法ってH8の時にもなんらかの参考(例えばメモリ確保に関しての
>>ノウハウとか)にならないかなぁと思ったものですから(^_^;)。
>その場合は、データ領域にポインタ変数をとるか、汎用レジスタを
>一つ専用に使ってこれをスタックポインタ代わりにします。
>要するに、データを格納してポインタをデクリメント(PUSH)
>と、データを取り出してインクリメント(POP)動作をさせれば
>よいわけです。PUSH、POP命令が使えないのでニモニック数が増えま
>すが。
>普通のCPUはスタックポインタが1つしかありませんので、複数の
>スタックポインタを使う言語、例えば Forth などではこういうテク
>ニックを使います。

あ、なるほど。コンパイラ自身がスタックを管理するワケですね。C言語側に
はその影響が出ないようにしてるっと。


-- 

##                             from Kazutaka 'Zak' Sawa (ZakLab)  ##
##                           e-Mail: mailto:zak.k.sawa@xxxxxxxxx  ##
##                           http://homepage1.nifty.com/~zaklab/  ##
##                                                                ##
## すべてのメールはバカ者によって盗聴されている可能性があります ##
スレッド概略
[4619(R)](起点)
 └[4641(U)]
   └[表示中]


投稿順に移動
[←前の記事へ(P)]
[→次の記事へ(N)]


リスト表示へ
[このスレッド(T)]
[本記事の前後(L)]