MultipleInst now know how to handle Prefix

This commit is contained in:
Clement Rouault
2015-09-22 10:24:41 +02:00
parent 32b12daa8f
commit da521908ed
4 changed files with 18 additions and 3 deletions
+1 -1
View File
@@ -770,7 +770,7 @@ class MultipleInstr(object):
# Change DelayedJump to LabeledJump ?
if isinstance(instruction, DelayedJump):
return self.add_delayed_jump(instruction)
if isinstance(instruction, Instruction):
if isinstance(instruction, (Instruction, Prefix)):
self.instrs[self.size] = instruction
self.size += len(instruction.get_code())
return
+1 -1
View File
@@ -660,7 +660,7 @@ class MultipleInstr(object):
# Change DelayedJump to LabeledJump ?
if isinstance(instruction, DelayedJump):
return self.add_delayed_jump(instruction)
if isinstance(instruction, Instruction):
if isinstance(instruction, (Instruction, Prefix)):
self.instrs[self.size] = instruction
self.size += len(instruction.get_code())
return
+8 -1
View File
@@ -111,4 +111,11 @@ TestInstr(Cpuid)()
TestInstr(Xchg)('RAX', 'RSP')
assert Xchg('RAX', 'RCX').get_code() == Xchg('RCX', 'RAX').get_code()
assert Xchg('RAX', 'RCX').get_code() == Xchg('RCX', 'RAX').get_code()
code = MultipleInstr()
code += Nop()
code += Rep + Nop()
code += Ret()
print(repr(code.get_code()))
assert code.get_code() == "\x90\xf3\x90\xc3"
+8
View File
@@ -117,3 +117,11 @@ TestInstr(Movsd, expected_result='movsd dword ptr es:[edi], dword ptr [esi]')()
TestInstr(Xchg)('EAX', 'ESP')
assert Xchg('EAX', 'ECX').get_code() == Xchg('ECX', 'EAX').get_code()
code = MultipleInstr()
code += Nop()
code += Rep + Nop()
code += Ret()
print(repr(code.get_code()))
assert code.get_code() == "\x90\xf3\x90\xc3"