[H8-ML(2574)] Re: 20KB を超えると転送できない??(セクションの初期化)
From: "Fujisawa Toru" <fujisawa@xxxxxxxxxxxxxxxxxxxxx>
Date: 2002年12月14日(土)12時12分35秒
hamayanさん
神工大の藤澤です。たびたびお世話になります。

> 私も秋月のコンパイラのみ使用しています。バイナリファイルですが、
> 標準ライブラリを検索すると、__INITSCTを見付けられるので、組み込
> まれてはいるのでしょう。但し、動作は無保証と考えた方が宜しいかと。
> 外部関数宣言も必要です。<−一応。

 確かにgrep()してみたらC38HAB.LIB(C38HNB.LIB)の中に見つかりました。
 早速、

 	extern void _INITSCT(void);
 
 を追加しました。

> あ、でも秋月のコンパイラ自体無保証だから・・・ここで情報を持ちよ
> るしか無いですね。

 無サポートでもありますし。。。よく壁に当たります(これは能力の問題)。


> ER5がインクリメントしていないので、
> ポストインクリメントレジスタ間接を使って、
> MOV.B	#H'00,@ER5+
> の方が良いでしょう。

 またしてもミスのフォローをありがとうございました。
 インクリメントはC言語と同様だったことと、「ポストインクリメント
 レジスタ間接」というアドレッシングモード(の述語)を実はちゃんと
 知らなかったので勉強になりました。


> しかし、H8にはEEPMOVと言う強力な転送命令が有りますので、
> アセンブラで書くなら、見逃す手は無いです。

 これには驚嘆しました。すると
 EEPMOV.W
 の一文でおしまいですか。。。。レジスタ4〜6にはそういう意味が
 あったんですね。


> 私は、グローバル領域に画面バッファを作ってLCDの表示を行っ
> ています。グローバル変数領域は、0クリアが必須なので、もし、
> 画面バッファみたいなのをグローバルに取っていれば、あながち無
> 関係とも言えないでしょう。

 そうですね。これでほぼ問題点は解決しました。
 今度は教えていただいたアセンブラとCの両方でセクションを初期化している
 のですが、それは無意味でしょうか?

hamayanさんをはじめとするみなさんには、何度も親切に教えて頂いてとても
有難く存知ます。

多分に初歩的な質問ばかりでしたが、質問して本当によかったとおもいます。
私もいつかは誰かに恩返しできるように頑張りたいとおもいますので、今後と
もどうぞよろしくおねがいいたします。m(_ _)m

---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.427 / Virus Database: 240 - Release Date: 2002/12/06


スレッド概略
[2478(R)](起点)
 └[2573(U)]
   └[表示中]


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


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