2バイトの整列条件をもつ型へのポインタに奇数の値を設定して,そのポインタを間接参照すると不正動作となります。
コンパイラはポインタの間接参照に対して,そのポインタの指す型の整列条件に適合した命令を使用するためです。
int __near * volatile x;
int func(void){
x = (int __near *)0xfaa1;
return *x; //コンパイラは *x に対して,2バイトの整列条件に
//適合した命令を出力するため,コードの実行時に
//*xは0xfaa0が指すデータを参照する
}
|