[H8-ML(4242)] Re: [H8-ML(4241)] Re: intの長さ (Was Re: AKI-H8 8048F インターバルタイマ)
From: "Henry of OB." <ob_henry@xxxxxxxxxxxxxxxx>
Date: 2003年12月19日(金)14時55分01秒
> int型はターゲットの一番処理しやすいサイズになるのだと
> 思っていたのですが間違っているでしょうか?

    大間違いです!

> あっている場合、コンパイラで差が出るんでしょうか?
> OS(Windowsとか)のアプリを作成するコンパイラは、色々
> あるのかもしれませんが、組み込み関係に限定してという事で。

    H8だけなら、良いんですが、移植性に優れていると
  謳われているのに、ここんとこは、随分Cの実装にも
  違いが有るし、データー幅を拡張する際の扱いがCP
  U毎に違っているので、油断できないのです。

  H8 は見かけに依らず32ビット幅のレジスターを持っており
  8−>16、16−>32の変換は符号付整数扱いでは、
  MSBが 1 だと 拡張したデーターが0xFF、0XFFFF
  になり、何だかなぁ〜なんです。

    char c;
     int i;

     i=c;        c=0x7f    ,i=0x007f
                 c=0x80    ,i=0xFF80   

    H8 だと、こうなります。  意図してましたか?
    これが SH2,3 だと 扱いが異なります。
 

     8  char
     8  unsigned char
  16 short int
    16 unsigned short int
    32 long int
    32 unsigned long int
      
    と、毎度サイズとMSB(符号)の扱いを意識して定義
  しないで、  int  を使う癖は早く直しておかないと
  後からバグが追いかけてきますね。
  実は、私はこれで泣かされています。

> int16, int32, int64, ...
 >を定義してint, short, long, ...を、
> 使わないようにするかですね。

    これって、LINUX で見かけますね。 符号を明記しないと
  駄目な H8 では 素直に 上記6種を使ったほうが混乱
  しないと思います。


〒226-0002 横浜市緑区


東本郷 6-17-1-602
  オンボード 杉本 秀夫
Tel:045-473-7678 Fax:474-5351
http://www02.so-net.ne.jp/~ob_henry
スレッド概略
[4230(R)](起点)
 └[4241(U)]
   └[表示中]
     ├[4243(1)]
     ├[4244(2)]
     └[4245(3)]


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


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