« ブログ始めました | トップページ | 静的コード解析の意義 »

2012年2月 1日 (水)

組み込み C言語 Tips エンディアンによる処理系依存

エンディアンの違いによる処理系依存なコードに遭遇した。

unsigned char *a;
unsigned short b;

a = &b;
*a = 1;

※char = 8bit, short = 16bit
  • リトルエンディアン環境(Microsoft Visual Studio等)

*a → 1,b → 1

  • ビックエンディアン環境(PowerPC等)

*a → 1,b → 256

原因はバイトオーダー(確保している領域のビットの順番)の違いによって‘1’が代入されるビットが変わる。

Photo

まぁ、大きさの違う領域をポインタとして渡すこと自体あまりよくないのだが...

処理系がコロコロ変わるような組み込みの仕事してる人は流用時に要注意。

« ブログ始めました | トップページ | 静的コード解析の意義 »

パソコン・インターネット」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1634555/43942000

この記事へのトラックバック一覧です: 組み込み C言語 Tips エンディアンによる処理系依存:

« ブログ始めました | トップページ | 静的コード解析の意義 »

無料ブログはココログ