mov eax, 0xFF000000 ; = 0xFF000000 mov ax, 0x8000 ; = 0xFF008000 mov ebx, eax ; <- ここ
直前に 16bit サイズで書き込んだのを、前に書き込んだ上位 16bit と結合させる必要があるため、
読み込み時に 5〜6 クロックのペナルティが課せられること。
別に 16bit に限らず、小さいサイズで書き込んで大きいサイズで読み出すとアウト。
ちなみに、
mov eax, 0x0 mov ax, 0x8000 mov ebx, eax
これもパーシャルストールが発生するけど、
xor eax, eax mov ax, 0x8000 mov ebx, eax
これなら問題ない。xor で 0 クリアすると eax レジスタには空フラグが立つらしい。