def parse_operand(string, location, tokens): """Parse instruction operand. """ sizes = { "dqword" : 128, "pointer" : 72, "qword" : 64, "pointer" : 40, "dword" : 32, "word" : 16, "byte" : 8, "bit" : 1, } if "immediate" in tokens: imm_str = "".join(tokens["immediate"]) base = 16 if imm_str.startswith("0x") or imm_str.startswith("-0x") else 10 immediate = int(imm_str, base) oprnd = ReilImmediateOperand(immediate) if "register" in tokens: if tokens["register"] in ["e", "empty"]: oprnd = ReilEmptyOperand() oprnd.size = 0 else: name = tokens["register"] oprnd = ReilRegisterOperand(name) if "size" in tokens: size = int(sizes[tokens["size"]]) oprnd.size = size return [oprnd]
def parse_operand(string, location, tokens): """Parse instruction operand. """ sizes = { "dqword": 128, "pointer": 72, "qword": 64, "pointer": 40, "dword": 32, "word": 16, "byte": 8, "bit": 1, } if "immediate" in tokens: imm_str = "".join(tokens["immediate"]) base = 16 if imm_str.startswith("0x") or imm_str.startswith( "-0x") else 10 immediate = int(imm_str, base) oprnd = ReilImmediateOperand(immediate) if "register" in tokens: if tokens["register"] in ["e", "empty"]: oprnd = ReilEmptyOperand() oprnd.size = 0 else: name = tokens["register"] oprnd = ReilRegisterOperand(name) if "size" in tokens: size = int(sizes[tokens["size"]]) oprnd.size = size return [oprnd]
def parse_operand(string, location, tokens): """Parse instruction operand. """ # print tokens sizes = { "dqword" : 128, "pointer" : 72, "qword" : 64, "pointer" : 40, "dword" : 32, "word" : 16, "byte" : 8, "bit" : 1, } # Immediate operand. if "imm" in tokens.keys(): if tokens["imm"].startswith("0x"): base = 16 else: base = 10 if "size" in tokens: oprnd = ReilImmediateOperand(int(tokens["imm"], base), int(sizes[tokens["size"]])) else: oprnd = ReilImmediateOperand(int(tokens["imm"], base)) if "size" in tokens: oprnd.size = int(sizes[tokens["size"]]) # Register operand. if "reg" in tokens.keys(): if tokens["reg"] == "e" or tokens["reg"] == "empty": oprnd = ReilEmptyOperand() oprnd.size = 0 else: oprnd = ReilRegisterOperand(tokens["reg"]) if "size" in tokens: oprnd.size = int(sizes[tokens["size"]]) # Placeholder operand. if "placeholder" in tokens.keys(): oprnd = ReilRegisterOperand("") oprnd.tag = tokens["placeholder"] if "size" in tokens: oprnd.size = int(sizes[tokens["size"]]) # print oprnd.tag # print oprnd.size # Temporary register operand. if "auto_reg" in tokens.keys(): oprnd = ReilRegisterOperand("") oprnd.tag = tokens["auto_reg"] if "size" in tokens: oprnd.size = int(sizes[tokens["size"]]) return [oprnd]