組み込み 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’が代入されるビットが変わる。
まぁ、大きさの違う領域をポインタとして渡すこと自体あまりよくないのだが...
処理系がコロコロ変わるような組み込みの仕事してる人は流用時に要注意。
« ブログ始めました | トップページ | 静的コード解析の意義 »
「パソコン・インターネット」カテゴリの記事
- 静的コード解析のカテゴリと特徴(2012.03.01)
- 静的コード解析の位置付け(2012.02.14)
- 静的コード解析の意義(2012.02.08)
- 組み込み C言語 Tips エンディアンによる処理系依存(2012.02.01)
トラックバック
この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1634555/43942000
この記事へのトラックバック一覧です: 組み込み C言語 Tips エンディアンによる処理系依存:
コメント