mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2025-10-05 02:39:44 +02:00
protected mode bit
This commit is contained in:
parent
3556745c32
commit
017537be35
4 changed files with 8 additions and 5 deletions
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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; }
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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"/>
|
||||||
|
|
|
@ -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"/>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue