[swfinterp] Interpret yet more opcodes

This commit is contained in:
Philipp Hagemeister 2014-11-17 04:00:31 +01:00
parent 0ab1ca5501
commit e983cf5277
2 changed files with 42 additions and 1 deletions

View file

@ -393,7 +393,10 @@ class SWFInterpreter(object):
self._classes_by_name, avm_class.variables])
while True:
opcode = _read_byte(coder)
if opcode == 17: # iftrue
if opcode == 16: # jump
offset = s24()
coder.seek(coder.tell() + offset)
elif opcode == 17: # iftrue
offset = s24()
value = stack.pop()
if value:
@ -403,6 +406,20 @@ class SWFInterpreter(object):
value = stack.pop()
if not value:
coder.seek(coder.tell() + offset)
elif opcode == 19: # ifeq
offset = s24()
value2 = stack.pop()
value1 = stack.pop()
if value2 == value1:
coder.seek(coder.tell() + offset)
elif opcode == 20: # ifne
offset = s24()
value2 = stack.pop()
value1 = stack.pop()
if value2 != value1:
coder.seek(coder.tell() + offset)
elif opcode == 32: # pushnull
stack.append(None)
elif opcode == 36: # pushbyte
v = _read_byte(coder)
stack.append(v)