Skip to content

Commit 3681100

Browse files
committed
ARM:ADR: update for conversion to C expressions
1 parent 6cc045a commit 3681100

File tree

1 file changed

+12
-10
lines changed

1 file changed

+12
-10
lines changed

chb/arm/opcodes/ARMAdr.py

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -61,9 +61,18 @@ def vrd(self) -> "XVariable":
6161
def ximm(self) -> "XXpr":
6262
return self.xpr(0, "ximm")
6363

64+
@property
65+
def caddr(self) -> "XXpr":
66+
return self.cxpr(0, "caddr")
67+
68+
@property
69+
def is_caddr_ok(self) -> bool:
70+
return self.is_cxpr_ok(0)
71+
6472
@property
6573
def annotation(self) -> str:
66-
assignment = str(self.vrd) + " := " + str(self.ximm)
74+
cx = " (C: " + (str(self.caddr) if self.is_caddr_ok else "None") + ")"
75+
assignment = str(self.vrd) + " := " + str(self.ximm) + cx
6776
return self.add_instruction_condition(assignment)
6877

6978

@@ -100,10 +109,7 @@ def opargs(self) -> List[ARMOperand]:
100109

101110
def annotation(self, xdata: InstrXData) -> str:
102111
xd = ARMAdrXData(xdata)
103-
if xd.is_ok:
104-
return xd.annotation
105-
else:
106-
return "Error value"
112+
return xd.annotation
107113

108114
def ast_prov(
109115
self,
@@ -130,13 +136,9 @@ def ast_prov(
130136
# high-level assignment
131137

132138
xd = ARMAdrXData(xdata)
133-
if not xd.is_ok:
134-
chklogger.logger.error(
135-
"Encountered error value at address %s", iaddr)
136-
return ([], [])
137139

138140
lhs = xd.vrd
139-
rhs = xd.ximm
141+
rhs = xd.caddr if xd.is_caddr_ok else xd.ximm
140142
defuses = xdata.defuses
141143
defuseshigh = xdata.defuseshigh
142144

0 commit comments

Comments
 (0)