mirror of
https://github.com/RRZE-HPC/OSACA.git
synced 2025-12-15 16:40:05 +01:00
Took out name attribute from operand parent class
This commit is contained in:
@@ -6,12 +6,12 @@ Only the parser below will be exported, so please add new parsers to __all__.
|
||||
from .base_parser import BaseParser
|
||||
from .parser_x86att import ParserX86ATT
|
||||
from .parser_AArch64 import ParserAArch64
|
||||
from .instruction_form import instructionForm
|
||||
from .instruction_form import InstructionForm
|
||||
from .operand import Operand
|
||||
|
||||
__all__ = [
|
||||
"Operand",
|
||||
"instructionForm",
|
||||
"InstructionForm",
|
||||
"BaseParser",
|
||||
"ParserX86ATT",
|
||||
"ParserAArch64",
|
||||
|
||||
@@ -10,7 +10,7 @@ class ConditionOperand(Operand):
|
||||
source=False,
|
||||
destination=False,
|
||||
):
|
||||
super().__init__("condition", source, destination)
|
||||
super().__init__(source, destination)
|
||||
self._ccode = ccode
|
||||
|
||||
@property
|
||||
|
||||
@@ -4,31 +4,39 @@ from osaca.parser.operand import Operand
|
||||
|
||||
|
||||
class DirectiveOperand(Operand):
|
||||
def __init__(self, name=None, parameter_id=None):
|
||||
super().__init__(name)
|
||||
self._parameter_id = parameter_id
|
||||
def __init__(self, name=None, parameters=None):
|
||||
self._name = name
|
||||
self._parameters = parameters
|
||||
|
||||
@property
|
||||
def name(self):
|
||||
return self._name
|
||||
|
||||
@name.setter
|
||||
def name(self, name):
|
||||
self._name = name
|
||||
|
||||
@property
|
||||
def parameters(self):
|
||||
return self._parameter_id
|
||||
return self._parameters
|
||||
|
||||
@parameters.setter
|
||||
def parameters(self, parameters):
|
||||
self._parameter_id = parameters
|
||||
self._parameters = parameters
|
||||
|
||||
|
||||
def __eq__(self, other):
|
||||
if isinstance(other, DirectiveOperand):
|
||||
return (
|
||||
self._name == other._name
|
||||
and self._parameter_id == other._parameter_id
|
||||
and self._parameters == other._parameters
|
||||
)
|
||||
elif isinstance(other, dict):
|
||||
return self._name == other["name"] and self._parameter_id == other["parameters"]
|
||||
return self._name == other["name"] and self._parameters == other["parameters"]
|
||||
return False
|
||||
|
||||
def __str__(self):
|
||||
return f"Directive(name={self._name}, parameters={self._parameter_id})"
|
||||
return f"Directive(name={self._name}, parameters={self._parameters})"
|
||||
|
||||
def __repr__(self):
|
||||
return self.__str__()
|
||||
|
||||
@@ -5,7 +5,16 @@ from osaca.parser.operand import Operand
|
||||
|
||||
class FlagOperand(Operand):
|
||||
def __init__(self, name=None, source=False, destination=False):
|
||||
super().__init__(name, source, destination)
|
||||
self._name = name
|
||||
super().__init__(source, destination)
|
||||
|
||||
@property
|
||||
def name(self):
|
||||
return self._name
|
||||
|
||||
@name.setter
|
||||
def name(self, name):
|
||||
self._name = name
|
||||
|
||||
def __str__(self):
|
||||
return (
|
||||
|
||||
@@ -5,10 +5,19 @@ from osaca.parser.operand import Operand
|
||||
|
||||
class IdentifierOperand(Operand):
|
||||
def __init__(self, name=None, offset=None, relocation=None, source=False, destination=False):
|
||||
super().__init__(name, source, destination)
|
||||
super().__init__(source, destination)
|
||||
self._name = name
|
||||
self._offset = offset
|
||||
self._relocation = relocation
|
||||
|
||||
@property
|
||||
def name(self):
|
||||
return self._name
|
||||
|
||||
@name.setter
|
||||
def name(self, name):
|
||||
self._name = name
|
||||
|
||||
@property
|
||||
def offset(self):
|
||||
return self._offset
|
||||
|
||||
@@ -13,7 +13,7 @@ class ImmediateOperand(Operand):
|
||||
source=False,
|
||||
destination=False,
|
||||
):
|
||||
super().__init__(str(value_id), source, destination)
|
||||
super().__init__(source, destination)
|
||||
self._identifier_id = identifier_id
|
||||
self._type_id = type_id
|
||||
self._value_id = value_id
|
||||
|
||||
@@ -47,7 +47,7 @@ class InstructionForm:
|
||||
return self._semantic_operands
|
||||
|
||||
@property
|
||||
def instruction(self):
|
||||
def mnemonic(self):
|
||||
return self._mnemonic
|
||||
|
||||
@property
|
||||
@@ -142,9 +142,9 @@ class InstructionForm:
|
||||
def breaks_dependency_on_equal_operands(self, boolean):
|
||||
self._breaks_dependency_on_equal_operands = boolean
|
||||
|
||||
@instruction.setter
|
||||
def instruction(self, instruction):
|
||||
self._mnemonic = instruction
|
||||
@mnemonic.setter
|
||||
def mnemonic(self, mnemonic):
|
||||
self._mnemonic = mnemonic
|
||||
|
||||
@label.setter
|
||||
def label(self, label):
|
||||
@@ -188,7 +188,7 @@ class InstructionForm:
|
||||
|
||||
def __str__(self):
|
||||
attributes = {
|
||||
"mnemonic": self.instruction,
|
||||
"mnemonic": self.mnemonic,
|
||||
"operands_id": self.operands,
|
||||
"hidden_operands": self.hidden_operands,
|
||||
"directive_id": self.directive,
|
||||
|
||||
@@ -5,7 +5,15 @@ from osaca.parser.operand import Operand
|
||||
|
||||
class LabelOperand(Operand):
|
||||
def __init__(self, name=None):
|
||||
super().__init__(name)
|
||||
self._name = name
|
||||
|
||||
@property
|
||||
def name(self):
|
||||
return self._name
|
||||
|
||||
@name.setter
|
||||
def name(self, name):
|
||||
self._name = name
|
||||
|
||||
def __str__(self):
|
||||
return f"Label(name={self._name}"
|
||||
|
||||
@@ -20,7 +20,7 @@ class MemoryOperand(Operand):
|
||||
source=False,
|
||||
destination=False,
|
||||
):
|
||||
super().__init__("memory", source, destination)
|
||||
super().__init__(source, destination)
|
||||
self._offset = offset
|
||||
self._base = base
|
||||
self._index = index
|
||||
@@ -127,7 +127,7 @@ class MemoryOperand(Operand):
|
||||
|
||||
def __str__(self):
|
||||
return (
|
||||
f"MemoryOperand(name={self._name}, offset={self._offset}, "
|
||||
f"MemoryOperand(offset={self._offset}, "
|
||||
f"base={self._base}, index={self._index}, scale={self._scale}, "
|
||||
f"segment_ext={self._segment_ext}, mask={self._mask}, "
|
||||
f"pre_indexed={self._pre_indexed}, post_indexed={self._post_indexed}, "
|
||||
|
||||
@@ -2,15 +2,10 @@
|
||||
|
||||
|
||||
class Operand:
|
||||
def __init__(self, name, source=False, destination=False):
|
||||
self._name = name
|
||||
def __init__(self, source=False, destination=False):
|
||||
self._source = source
|
||||
self._destination = destination
|
||||
|
||||
@property
|
||||
def name(self):
|
||||
return self._name
|
||||
|
||||
@property
|
||||
def source(self):
|
||||
return self._source
|
||||
@@ -19,10 +14,6 @@ class Operand:
|
||||
def destination(self):
|
||||
return self._destination
|
||||
|
||||
@name.setter
|
||||
def name(self, name):
|
||||
self._name = name
|
||||
|
||||
@source.setter
|
||||
def source(self, source):
|
||||
self._source = source
|
||||
@@ -32,7 +23,7 @@ class Operand:
|
||||
self._destination = destination
|
||||
|
||||
def __str__(self):
|
||||
return f"Operand(Name: {self._name}, Source: {self._source}, Destination: {self._destination})"
|
||||
return f"Operand(Source: {self._source}, Destination: {self._destination})"
|
||||
|
||||
def __repr__(self):
|
||||
return self.__str__()
|
||||
|
||||
@@ -306,7 +306,7 @@ class ParserAArch64(BaseParser):
|
||||
self.directive.parseString(line, parseAll=True).asDict()
|
||||
)
|
||||
instruction_form.directive = DirectiveOperand(
|
||||
name=result[0].name, parameter_id=result[0].parameters
|
||||
name=result[0].name, parameters=result[0].parameters
|
||||
)
|
||||
if result[1] is not None:
|
||||
instruction_form.comment = " ".join(result[1])
|
||||
@@ -394,7 +394,7 @@ class ParserAArch64(BaseParser):
|
||||
def process_directive_operand(self, operand):
|
||||
return DirectiveOperand(
|
||||
name=operand["name"],
|
||||
parameter_id=operand["parameters"],
|
||||
parameters=operand["parameters"],
|
||||
), operand["comment"] if "comment" in operand else None
|
||||
|
||||
def process_register_operand(self, operand):
|
||||
|
||||
@@ -238,7 +238,7 @@ class ParserX86ATT(BaseParser):
|
||||
)
|
||||
instruction_form.directive = DirectiveOperand(
|
||||
name=result[0].name,
|
||||
parameter_id=result[0].parameters,
|
||||
parameters=result[0].parameters,
|
||||
)
|
||||
|
||||
if result[1] is not None:
|
||||
@@ -317,7 +317,7 @@ class ParserX86ATT(BaseParser):
|
||||
)
|
||||
|
||||
def process_directive(self, directive):
|
||||
directive_new = DirectiveOperand(name=directive["name"], parameter_id=directive["parameters"] if "parameters" in directive else [])
|
||||
directive_new = DirectiveOperand(name=directive["name"], parameters=directive["parameters"] if "parameters" in directive else [])
|
||||
return directive_new, directive["comment"] if "comment" in directive else None
|
||||
|
||||
def process_memory_address(self, memory_address):
|
||||
|
||||
@@ -23,7 +23,8 @@ class RegisterOperand(Operand):
|
||||
shift=False,
|
||||
shift_op=False,
|
||||
):
|
||||
super().__init__(name, source, destination)
|
||||
super().__init__(source, destination)
|
||||
self._name = name
|
||||
self._width = width
|
||||
self._prefix = prefix
|
||||
self._regtype = regtype
|
||||
@@ -38,6 +39,14 @@ class RegisterOperand(Operand):
|
||||
self._shift = shift
|
||||
self._shift_op = shift_op
|
||||
|
||||
@property
|
||||
def name(self):
|
||||
return self._name
|
||||
|
||||
@name.setter
|
||||
def name(self, name):
|
||||
self._name = name
|
||||
|
||||
@property
|
||||
def width(self):
|
||||
return self._width
|
||||
|
||||
Reference in New Issue
Block a user