def jvmop(func, name=None, sig=tuple(), **kw):
if not hasattr(func, "sig"): func.sig = sig
func.__name__ = name or func.__name__.replace("_", "")
func.__dict__.update(kw)
return func
class ConstantIndexOperand(Operand):
__slots__ = ('index', )
def __init__(self, index): self.index = index
def __repr__(self): return '<ConstantIndexOperand(index=%r)>' % self.index
# ...
class JVMReader:
def disasm(self):
op = self.readbyte()
widemode = op == 0xC4
if widemode:
op = self.readbyte()
i = self.instructions[op]
if widemode:
sig = [(b'>H', o[1]) if o[0] == b'>B' else o for i in i.sig]
else:
sig = i.sig