mirror of
https://github.com/robmcmullen/atrcopy.git
synced 2024-12-28 15:29:33 +00:00
Removed use_origin flag and assume any segment with a start_addr > 0 is meant to have an origin
This commit is contained in:
parent
c897460df0
commit
2e3a6147d5
@ -19,9 +19,9 @@ selected_bit_mask = 0x80
|
|||||||
|
|
||||||
def get_style_bits(match=False, comment=False, selected=False, data=False, diff=False, user=0):
|
def get_style_bits(match=False, comment=False, selected=False, data=False, diff=False, user=0):
|
||||||
""" Return an int value that contains the specified style bits set.
|
""" Return an int value that contains the specified style bits set.
|
||||||
|
|
||||||
Available styles for each byte are:
|
Available styles for each byte are:
|
||||||
|
|
||||||
match: part of the currently matched search
|
match: part of the currently matched search
|
||||||
comment: user commented area
|
comment: user commented area
|
||||||
selected: selected region
|
selected: selected region
|
||||||
@ -67,7 +67,7 @@ class SegmentSaver(object):
|
|||||||
class OrderWrapper(object):
|
class OrderWrapper(object):
|
||||||
"""Wrapper for numpy data so that manipulations can use normal numpy syntax
|
"""Wrapper for numpy data so that manipulations can use normal numpy syntax
|
||||||
and still affect the data according to the byte ordering.
|
and still affect the data according to the byte ordering.
|
||||||
|
|
||||||
Numpy's fancy indexing can't be used for setting set values, so this
|
Numpy's fancy indexing can't be used for setting set values, so this
|
||||||
intermediate layer is needed that defines the __setitem__ method that
|
intermediate layer is needed that defines the __setitem__ method that
|
||||||
explicitly references the byte ordering in the data array.
|
explicitly references the byte ordering in the data array.
|
||||||
@ -124,7 +124,7 @@ class UserExtraData(object):
|
|||||||
class SegmentData(object):
|
class SegmentData(object):
|
||||||
def __init__(self, data, style=None, extra=None, debug=False, order=None):
|
def __init__(self, data, style=None, extra=None, debug=False, order=None):
|
||||||
"""Storage for raw data
|
"""Storage for raw data
|
||||||
|
|
||||||
order is a list into the base array's data; each item in the list is an
|
order is a list into the base array's data; each item in the list is an
|
||||||
index of the base array. E.g. if the base array is the 20 element list
|
index of the base array. E.g. if the base array is the 20 element list
|
||||||
containing the data [100, 101, ... 119] and the order is [10, 0, 5, 2],
|
containing the data [100, 101, ... 119] and the order is [10, 0, 5, 2],
|
||||||
@ -225,7 +225,7 @@ class SegmentData(object):
|
|||||||
def byte_bounds_offset(self):
|
def byte_bounds_offset(self):
|
||||||
"""Return start and end offsets of this segment's data into the
|
"""Return start and end offsets of this segment's data into the
|
||||||
base array's data.
|
base array's data.
|
||||||
|
|
||||||
This ignores the byte order index. Arrays using the byte order index
|
This ignores the byte order index. Arrays using the byte order index
|
||||||
will have the entire base array's raw data.
|
will have the entire base array's raw data.
|
||||||
"""
|
"""
|
||||||
@ -253,7 +253,7 @@ class SegmentData(object):
|
|||||||
|
|
||||||
def get_indexes_from_base(self):
|
def get_indexes_from_base(self):
|
||||||
"""Get array of indexes from the base array, as if this raw data were
|
"""Get array of indexes from the base array, as if this raw data were
|
||||||
indexed.
|
indexed.
|
||||||
"""
|
"""
|
||||||
if self.is_indexed:
|
if self.is_indexed:
|
||||||
return np.copy(self.order[i])
|
return np.copy(self.order[i])
|
||||||
@ -318,7 +318,7 @@ class SegmentData(object):
|
|||||||
|
|
||||||
def get_reverse_index(self, base_index):
|
def get_reverse_index(self, base_index):
|
||||||
"""Get index into this segment's data given the index into the base data
|
"""Get index into this segment's data given the index into the base data
|
||||||
|
|
||||||
Raises IndexError if the base index doesn't map to anything in this
|
Raises IndexError if the base index doesn't map to anything in this
|
||||||
segment's data
|
segment's data
|
||||||
"""
|
"""
|
||||||
@ -339,7 +339,6 @@ class SegmentData(object):
|
|||||||
|
|
||||||
class DefaultSegment(object):
|
class DefaultSegment(object):
|
||||||
savers = [SegmentSaver]
|
savers = [SegmentSaver]
|
||||||
use_origin_default = False
|
|
||||||
can_resize_default = False
|
can_resize_default = False
|
||||||
|
|
||||||
def __init__(self, rawdata, start_addr=0, name="All", error=None, verbose_name=None):
|
def __init__(self, rawdata, start_addr=0, name="All", error=None, verbose_name=None):
|
||||||
@ -352,10 +351,6 @@ class DefaultSegment(object):
|
|||||||
self.map_width = 40
|
self.map_width = 40
|
||||||
self.uuid = str(uuid.uuid4())
|
self.uuid = str(uuid.uuid4())
|
||||||
|
|
||||||
# Some segments may not have a standard place in memory, so this flag
|
|
||||||
# can be used to skip the memory map lookup when displaying disassembly
|
|
||||||
self.use_origin = self.__class__.use_origin_default
|
|
||||||
|
|
||||||
# Some segments may be resized to contain additional segments not
|
# Some segments may be resized to contain additional segments not
|
||||||
# present when the segment was created.
|
# present when the segment was created.
|
||||||
self.can_resize = self.__class__.can_resize_default
|
self.can_resize = self.__class__.can_resize_default
|
||||||
@ -404,7 +399,7 @@ class DefaultSegment(object):
|
|||||||
|
|
||||||
def __getstate__(self):
|
def __getstate__(self):
|
||||||
state = dict()
|
state = dict()
|
||||||
for key in ['start_addr', 'error', 'name', 'verbose_name', 'page_size', 'map_width', 'uuid', 'use_origin', 'can_resize']:
|
for key in ['start_addr', 'error', 'name', 'verbose_name', 'page_size', 'map_width', 'uuid', 'can_resize']:
|
||||||
state[key] = getattr(self, key)
|
state[key] = getattr(self, key)
|
||||||
r = self.rawdata
|
r = self.rawdata
|
||||||
state['_rawdata_bounds'] = list(r.byte_bounds_offset())
|
state['_rawdata_bounds'] = list(r.byte_bounds_offset())
|
||||||
@ -424,8 +419,6 @@ class DefaultSegment(object):
|
|||||||
"""
|
"""
|
||||||
if not hasattr(self, 'uuid'):
|
if not hasattr(self, 'uuid'):
|
||||||
self.uuid = str(uuid.uuid4())
|
self.uuid = str(uuid.uuid4())
|
||||||
if not hasattr(self, 'use_origin'):
|
|
||||||
self.use_origin = self.__class__.use_origin_default
|
|
||||||
if not hasattr(self, 'can_resize'):
|
if not hasattr(self, 'can_resize'):
|
||||||
self.can_resize = self.__class__.can_resize_default
|
self.can_resize = self.__class__.can_resize_default
|
||||||
|
|
||||||
@ -979,7 +972,6 @@ class ObjSegment(DefaultSegment):
|
|||||||
DefaultSegment.__init__(self, rawdata, start_addr, name, **kwargs)
|
DefaultSegment.__init__(self, rawdata, start_addr, name, **kwargs)
|
||||||
self.metadata_start = metadata_start
|
self.metadata_start = metadata_start
|
||||||
self.data_start = data_start
|
self.data_start = data_start
|
||||||
self.use_origin = True
|
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
count = len(self)
|
count = len(self)
|
||||||
|
Loading…
Reference in New Issue
Block a user