def bipush(value): if value == -1: return u1(0x2) # iconst_m1 elif value == 0: return u1(0x3) # iconst_0 elif value == 1: return u1(0x4) # iconst_1 elif value == 2: return u1(0x5) # iconst_2 else: return u1(0x10) + s1(value)
def aload(idx): if idx == 0: return u1(0x2A) # aload_0 elif idx == 1: return u1(0x2B) # aload_1 elif idx == 2: return u1(0x2C) # aload_2 elif idx == 3: return u1(0x2D) # aload_3 else: return u1(0x19) + u1(idx)
def goto_w(offset): return u1(0xC8) + s4(offset)
def invokestatic(ref): return u1(0xB8) + u2(ref)
def invokevirtual(method): return u1(0xB6) + u2(method)
def name_and_type(name_index, descriptor_index): return u1(id_NameAndType) \ + u2(name_index) \ + u2(descriptor_index)
def field_ref(class_index, name_and_type_index): return u1(id_Fieldref) \ + u2(class_index) \ + u2(name_and_type_index)
def class_ref(name_index): return u1(id_Class) \ + u2(name_index)
def i2l(): return u1(0x85)
def putstatic(ref): return u1(0xB3) + u2(ref)
def putfield(ref): return u1(0xB5) + u2(ref)
def imul(): return u1(0x68)
def iadd(): return u1(0x60)
def swap(): return u1(0x5F)
def voidreturn(): return u1(0xB1)
def ifeq(offset): return u1(0x99) + s2(offset)
def nop(): return u1(0)
def getfield(ref): return u1(0xB4) + u2(ref)
def lcmp(): return u1(0x94)
def i2c(): return u1(0x92)
def method_ref(class_index, name_and_type_index): return u1(id_Methodref) \ + u2(class_index) \ + u2(name_and_type_index)
def getstatic(field_index): return u1(0xB2) + u2(field_index)
def utf8(text): return u1(id_Utf8) \ + u2(len(text)) \ + str_to_byte(text)
def aaload(): return u1(0x32)
def string(utf8str): return u1(id_String) \ + u2(utf8str)
def ldc(const_index): return u1(0x12) + u1(const_index)