protected mode bit

This commit is contained in:
caheckman 2019-08-25 13:35:15 -04:00
parent 3556745c32
commit 017537be35
4 changed files with 8 additions and 5 deletions

View file

@ -105,10 +105,10 @@ public class SegmentedAddress extends GenericAddress {
*/ */
@Override @Override
public Address getNewAddress(long byteOffset) { public Address getNewAddress(long byteOffset) {
SegmentedAddress res = SegmentedAddressSpace segSpace = (SegmentedAddressSpace) addrSpace;
((SegmentedAddressSpace) addrSpace).getAddressInSegment(byteOffset, segment); SegmentedAddress res = segSpace.getAddressInSegment(byteOffset, segment);
if (res == null) { if (res == null) {
return this; return segSpace.getAddress(byteOffset);
} }
return res; return res;
} }

View file

@ -251,7 +251,7 @@ define context contextreg
opsize=(2,3) # =0 16-bit operands =1 32-bit operands =2 64-bit operands opsize=(2,3) # =0 16-bit operands =1 32-bit operands =2 64-bit operands
segover=(4,6) # 0=default 1=cs 2=ss 3=ds 4=es 5=fs 6=gs segover=(4,6) # 0=default 1=cs 2=ss 3=ds 4=es 5=fs 6=gs
highseg=(4,4) # high bit of segover will be set for ES, FS, GS highseg=(4,4) # high bit of segover will be set for ES, FS, GS
# sstype=(7,7) # 0=DS default 1=SS default protectedMode=(7,7) # 0 for real mode, 1 for protected mode
repneprefx=(8,8) # 0xf2 REPNE prefix repneprefx=(8,8) # 0xf2 REPNE prefix
repprefx=(9,9) # 0xf3 REP prefix repprefx=(9,9) # 0xf3 REP prefix
@ -1387,7 +1387,8 @@ check_Rmr32_dest: is epsilon { }
check_rm32_dest: is epsilon { } check_rm32_dest: is epsilon { }
check_EAX_dest: is epsilon { } check_EAX_dest: is epsilon { }
ptr1616: reloc is imm16; j16 [ reloc = j16*0x10000 + imm16; ] { CS = j16; export *[ram]:4 reloc; } ptr1616: reloc is protectedMode=0 & imm16; j16 [ reloc = j16*0x10 + imm16; ] { CS = j16; export *[ram]:4 reloc; }
ptr1616: reloc is protectedMode=1 & imm16; j16 [ reloc = j16*0x10000 + imm16; ] { CS = j16; export *[ram]:4 reloc; }
ptr1632: j16":"imm32 is imm32; j16 { CS = j16; export *:4 imm32; } ptr1632: j16":"imm32 is imm32; j16 { CS = j16; export *:4 imm32; }

View file

@ -19,6 +19,7 @@
<context_set space="ram"> <context_set space="ram">
<set name="addrsize" val="0"/> <set name="addrsize" val="0"/>
<set name="opsize" val="0"/> <set name="opsize" val="0"/>
<set name="protectedMode" val="0"/>
</context_set> </context_set>
<tracked_set space="ram"> <tracked_set space="ram">
<set name="DF" val="0"/> <set name="DF" val="0"/>

View file

@ -20,6 +20,7 @@
<context_set space="ram"> <context_set space="ram">
<set name="addrsize" val="0"/> <set name="addrsize" val="0"/>
<set name="opsize" val="0"/> <set name="opsize" val="0"/>
<set name="protectedMode" val="1"/>
</context_set> </context_set>
<tracked_set space="ram"> <tracked_set space="ram">
<set name="DF" val="0"/> <set name="DF" val="0"/>