C99に対応した標準Cライブラリの実装レポートを行っていきます。

プロフィール 

Author:高木信尚

ホームページ
ブログ

最近の記事 

最近のコメント 

最近のトラックバック 

月別アーカイブ 

カテゴリー 

ブロとも申請フォーム 

この人とブロともになる

ホーム 全記事一覧 << 前の記事 次の記事 >>

 

2008/10/07 11:43|

 

今回は、"h8300-hms"ターゲットのgccの癖について調べてみたいと思います。コンパイラの癖を予め知っておくことで、コードの最適化がやりやすくなります。

癖1
浮動小数点型は単精度しかサポートされていません。float型は一般的な処理系と同様、IEC 60559の単精度浮動小数点フォーマットですが、double型やlong double型もfloat型と同じで単精度しかありません。これは、厳密には標準規格に合致していないのでしょうが、用途を考えるとこれでも十分な気はします。

癖2
バイトオーダーはビッグエンディアンです。Windowsにせよ、Linuxにせよ、Intelが主流になってしまった今日ではビッグエンディアンのプロセッサに触れたことがない方もおられるかもしれませんが、H8はビッグエンディアンなのです。

癖3
H8シリーズは、1ビット単位のシフト命令しかないため、シフト演算は決して速くありません。シフトを使うか、乗除算を使うか、微妙なケースもあるかもしれません。

癖4
wchar_t型は16ビットで、ワイド文字の内部表現はUTF-16です。組み込み用途にはオーバースペックかもしれませんが、<wchar.h>や<wctype.h>の関数は、そのつもりで実装する必要がありそうです。

癖5
CPUキャッシュ、パイプライン、スーパースカラといった近代的な機能はありません。それらの影響を考慮する必要はなさそうです。

癖6
文字列定数への書き込みはできません。昔のgccでは可能だったようですが、gcc-3.4.xやgcc-4.0.xではエラーになります。

癖7
-mint32を指定した場合、H8/300では、int型の読み書きがアトミックオペレーションになりません。sig_atomic_t型を決めるときには注意が必要そうです。

何か、強引に七癖にしてしまった感がありますが、他にも癖と呼べる特性が結構あります。それらについては追々お話しすることにしたいと思います。
2006/01/23 19:13|処理系の特性TB:0CM:1

コメント
管理人のみ閲覧できます
このコメントは管理人のみ閲覧できます
#|2006/01/23(月) 20:29 [ 編集 ]

コメントの投稿

管理者にだけ表示を許可する


トラックバック
トラックバックURLはこちら
http://libc.blog47.fc2.com/tb.php/8-19e33227

ホーム 全記事一覧 << 前の記事 次の記事 >>

ブログ内検索 

お勧め書籍 

RSSフィード 

リンク 

このブログをリンクに追加する

Powered By FC2ブログ 

Powered By FC2ブログ
ブログやるならFC2ブログ

Copyright(C) 2006 TAKAGI Nobuhisa All rights reserved.
Powered by FC2ブログ. 無料ホームページ アフィリエイト レンタルサーバー FC2ブログ 一戸建て template designed by 遥かなるわらしべ長者への挑戦.