File tree Expand file tree Collapse file tree 1 file changed +20
-8
lines changed
Expand file tree Collapse file tree 1 file changed +20
-8
lines changed Original file line number Diff line number Diff line change @@ -42,26 +42,38 @@ def extract_count(t):
4242
4343 return (f , s , c )
4444
45- fmt , addr = line .strip ("/" ).split ()
45+
46+ fmt , * rest = line .strip ("/" ).split ()
47+
48+ rest = "" .join (rest )
4649
4750 fmt = get_fmt (fmt )
4851
4952 elif len (_args ) == 1 : # only address
50- addr = _args [0 ]
53+ rest = _args [0 ]
5154 fmt = DEFAULT_FMT
5255
5356 else :
54- return False
55-
56- addr = addr .strip ('$' )
57+ rest = _args
5758
5859 if ql .archtype in (QL_ARCH .ARM , QL_ARCH .ARM_THUMB ):
59- addr = addr .replace ("fp" , "r11" )
60+ rest = rest .replace ("fp" , "r11" )
6061
6162 elif ql .archtype == QL_ARCH .MIPS :
62- addr = addr .replace ("fp" , "s8" )
63+ rest = rest .replace ("fp" , "s8" )
64+
65+ # for supporting addition of register with constant value
66+ elems = rest .split ("+" )
67+ elems = [elem .strip ("$" ) for elem in elems ]
68+
69+ items = []
70+ for elem in elems :
71+ if elem in ql .reg .register_mapping .keys ():
72+ items .append (getattr (ql .reg , elem , None ))
73+ else :
74+ items .append (_parse_int (elem ))
6375
64- addr = getattr ( ql . reg , addr ) if addr in ql . reg . register_mapping . keys () else _parse_int ( addr )
76+ addr = sum ( items )
6577
6678 def unpack (bs , sz ):
6779 return {
You can’t perform that action at this time.
0 commit comments