mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2025-10-04 10:19:23 +02:00
Added x86:LE:16:Protected Mode
This commit is contained in:
parent
cbf7b80587
commit
8240d3c8db
9 changed files with 78 additions and 32 deletions
|
@ -35,6 +35,7 @@ public class ProtectedAddressSpace extends SegmentedAddressSpace {
|
|||
offsetMask = 1;
|
||||
offsetMask <<= offsetSize;
|
||||
offsetMask -= 1;
|
||||
maxAddress = getUncheckedAddress(maxOffset);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -64,4 +65,11 @@ public class ProtectedAddressSpace extends SegmentedAddressSpace {
|
|||
protected SegmentedAddress getAddressInSegment(long flat, int preferredSegment) {
|
||||
return null; // The segment cannot be changed as the flat explicitly encodes it
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getNextOpenSegment(Address addr) {
|
||||
int res = getDefaultSegmentFromFlat(addr.getOffset());
|
||||
res += 1;
|
||||
return res;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -46,10 +46,9 @@ public class SegmentedAddressSpace extends GenericAddressSpace {
|
|||
*/
|
||||
protected SegmentedAddressSpace(String name, int size, int unique) {
|
||||
super(name, size, TYPE_RAM, unique);
|
||||
spaceSize = 1;
|
||||
spaceSize <<= size;
|
||||
maxOffset = spaceSize - 1;
|
||||
maxAddress = getUncheckedAddress(maxOffset);
|
||||
// maxAddress = getUncheckedAddress(maxOffset);
|
||||
// Constructors for derived classes that call this will
|
||||
// need to reconstruct maxAddress themselves.
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -318,6 +317,18 @@ public class SegmentedAddressSpace extends GenericAddressSpace {
|
|||
return new SegmentedAddress(this, segment, segmentOffset);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the segment index for the first segment whose start address
|
||||
* comes after the given address
|
||||
* @param addr is the given address
|
||||
* @return the segment index
|
||||
*/
|
||||
public int getNextOpenSegment(Address addr) {
|
||||
int res = (int) addr.getOffset(); // The "flat" offset (presumably real-mode encoded)
|
||||
res = (res >> 4) + 1;
|
||||
return res;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @see ghidra.program.model.address.AddressSpace#getPhysicalSpace()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue