From 67904719be6d69dc4c571bafaeaa5e2aca8fd03b Mon Sep 17 00:00:00 2001 From: Maurizio Porrato Date: Thu, 23 Jan 2020 21:58:48 +0000 Subject: [PATCH] Fix handling of indirect references --- asm.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/asm.py b/asm.py index 729bcd4..04d03df 100755 --- a/asm.py +++ b/asm.py @@ -46,7 +46,7 @@ class ASM(SimpleNamespace): return (0x1f, arg) elif type(arg) == Indirect: if type(arg.disp) == Expr: - disp = arg.disp.value + disp = getattr(arg.disp, "value", 0) else: disp = arg.disp if arg.reg is None: @@ -67,10 +67,15 @@ class ASM(SimpleNamespace): elif arg.reg in ('PC', 'EX'): raise SyntaxError() else: - if arg.disp == 0: - return (0x08+REGISTERS[arg.reg], None) + if hasattr(type(arg.reg), "getstr"): + r = arg.reg.getstr() else: - return (0x10+REGISTERS[arg.reg], disp) + r = arg.reg + print("REG: "+r) + if arg.disp == 0: + return (0x08+REGISTERS[r], None) + else: + return (0x10+REGISTERS[r], disp) def code(self): o, b = OPCODES[self.op] a_bits, a_extra = self.addr(self.a, True)