'Convert a string to argv list, pre-processing register and variable values
Args:
- str: input string (String)
Returns:
- argv list (List)'

def string_to_argv(self, str):

    try:
        str = str.encode('ascii', 'ignore')
    except:
        pass
    str = decode_string_escape(str)
    args = shlex.split(str)
    for (idx, a) in enumerate(args):
        a = a.strip(',')
        if a.startswith('$'):
            v = self.parse_and_eval(a)
            if ((v != None) and (v != 'void')):
                if v.startswith('0x'):
                    args[idx] = v.split()[0]
                else:
                    args[idx] = v
        elif a.startswith('+'):
            adder = to_int(self.parse_and_eval(a[1:]))
            if (adder is not None):
                args[idx] = ('%s' % to_hex((to_int(args[(idx - 1)]) + adder)))
        elif is_math_exp(a):
            try:
                v = eval(('%s' % a))
                if (not isinstance(v, (six.string_types + six.integer_types))):
                    continue
                args[idx] = ('%s' % (to_hex(v) if (to_int(v) != None) else v))
            except:
                pass
    if (config.Option.get('verbose') == 'on'):
        msg(args)
    return args
