@@ -39,6 +39,9 @@ def opers(i):
3939 s = []
4040 for op in i .operands :
4141 if op ._is_mem :
42+ if op .a .base ._is_reg and op .a .base .etype & regtype .PC :
43+ if i .address is not None :
44+ op = op .__class__ (i .address + i .length + op .a .disp ,op .size ,seg = op .a .seg )
4245 s .append ((Token .Memory , deref (op )))
4346 elif op ._is_cst :
4447 if i .misc ["imm_ref" ] is not None :
@@ -58,11 +61,11 @@ def opers(i):
5861def oprel (i ):
5962 to = i .misc ["to" ]
6063 if to is not None :
61- return [(Token .Address , "*" + str (to ))]
64+ return [(Token .Address , str (to ))]
6265 if (i .address is not None ) and i .operands [0 ]._is_cst :
6366 v = i .address + i .operands [0 ].signextend (32 ) + i .length
6467 i .misc ["to" ] = v
65- return [(Token .Address , "*" + str (v ))]
68+ return [(Token .Address , str (v ))]
6669 return [(Token .Constant , ".%+d" % i .operands [0 ].value )]
6770
6871
@@ -147,11 +150,11 @@ def opers_att(i):
147150def oprel_att (i ):
148151 to = i .misc ["to" ]
149152 if to is not None :
150- return [(Token .Address , "*" + str (to ))]
153+ return [(Token .Address , str (to ))]
151154 if (i .address is not None ) and i .operands [0 ]._is_cst :
152155 v = i .address + i .operands [0 ].signextend (32 ) + i .length
153156 i .misc ["to" ] = v
154- return [(Token .Address , "*" + str (v ))]
157+ return [(Token .Address , str (v ))]
155158 return [(Token .Constant , "$.%+d" % i .operands [0 ].value )]
156159
157160
@@ -849,7 +852,7 @@ def att_opers(i, operands=None):
849852def att_oprel (i ):
850853 to = i .misc ["to" ]
851854 if to is not None :
852- return [(Token .Address , "*" + str (to ))]
855+ return [(Token .Address , str (to ))]
853856 op = i .operands [0 ]
854857 if op ._is_lab :
855858 return [(Token .Address , str (op .ref ))]
0 commit comments