1234567891011121314151617181920212223242526272829303132 |
- { %cpu=i386 }
- { %fail }
- program bug;
- type
- br=bitpacked record //Note! "bitpacked"
- l:0..31;
- m:0..31;
- h:0..63;
- end;
- var
- test:br;
- {$asmmode att}
- begin
- with test do
- begin
- l:=4;
- m:=8;
- l:=$f
- end;
- asm
- movb br.m,%al //eax should be 4,but it is 32. Eight times. error!
- movb test.m,%al //eax should be 8,but it is, a strange number. error!
- end;
- asm
- movb $br.m/8,%al //OK, eax is 4 now, it is the right offset.
- movb test+br.m/8,%al //OK, eax is 8 now, it is right, too.
- end;
- end.
|