mirror of
https://github.com/hakril/PythonForWindows
synced 2026-06-08 14:31:45 +00:00
MultipleInst now know how to handle Prefix
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user