|
|
|
| 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:0|CM:1|▲
|
|
|
コメント
|
このコメントは管理人のみ閲覧できます
|
#|2006/01/23(月) 20:29 [ 編集 ]
| |
コメントの投稿
| |
|
| |
トラックバック
|
トラックバックURLはこちら
http://libc.blog47.fc2.com/tb.php/8-19e33227
|
| |
|
|
ホーム
全記事一覧
<< 前の記事
次の記事 >>
|
|