def bytes(self): ''' Returns opcodes ''' if self.asm not in ('DEFB', 'DEFS', 'DEFW'): if self.pending: tmp = self.arg # Saves current arg temporarily self.arg = tuple([0] * self.arg_num) result = AsmInstruction.bytes(self) self.arg = tmp # And recovers it return result return AsmInstruction.bytes(self) if self.asm == 'DEFB': if self.pending: return tuple([0] * self.arg_num) return tuple([x & 0xFF for x in self.argval()]) if self.asm == 'DEFS': if self.pending: N = self.arg[0] if isinstance(N, Expr): N = N.eval() return tuple([0] * N) # ?? args = self.argval() num = args[1] & 0xFF return tuple([num] * args[0]) if self.pending: # DEFW return tuple([0] * 2 * self.arg_num) result = () for i in self.argval(): x = i & 0xFFFF result += (x & 0xFF, x >> 8) return result