澤口@一升金です。 hamayanさんの<200305250204.h4P246w11475@xxxxxxxxxxxxxxxxxxxxx>から >コンパイラの問題なら、他にも有るし、それはコンパイラメーカーに直 >してもらえば良いだけの話では? うーん、これは「問題」ではなくて、例えば int のサイズがコンパイラ 毎に違うとか、ビッグエンディアン、リトルエンディアンと同じ、コンパ イラ仕様そのものですから、コンパイラメーカーが直す義理は無いと思い ます。ほとんど実行が期待できないわけですから、「良いだけの話」とい うのはちょっと・・・。 問題とすべきところは、C言語ではもともとメモリの扱いは抽象化されてい るのに、それを実ハードの物理イメージと無条件に同一視するというプロ グラマの設計方針ですね。 設計論的には当然、物理層とトランスポート層は区分けされるべきなんで、 そうしないと、例えばプロトコルの移植などにはえらく苦労します。 今回はたまたまメーカーがヘッダを供給しているし、内蔵周辺ですから差 異は目立ちませんが、一般的に外付け周辺用のドライバを作るときはデバ イス自体がバス幅を8bitとか16bitに変更できたり、LSBとMSBの物理位置が CPUとは異なっていたりします。 ポーティングを頻繁に行う場合はビット位置をマクロ定義して、ついでに MSBとLSBの反転やらなにやらもマクロで定義した方が作業が速いのは確か なようです。 日立の