zoukankan      html  css  js  c++  java
  • 五、指令集和解释器

    一、字节码与指令集

    https://blog.csdn.net/hudashi/article/details/7062675

    二、指令与指令解码

    所有代码:https://github.com/zxh0/jvmgo-book

    本章不会把指令文件全部列出,请观看源码

    1、Instruction接口

    在jvmgoinstructionsase文件夹下创建instruction.go文件

     1 package base
     2 
     3 import "jvmgo/ch05/rtda"
     4 
     5 type Instruction interface {
     6     FetchOperands(reader *BytecodeReader)
     7     Execute(frame *rtda.Frame)
     8 }
     9 
    10 type NoOperandsInstruction struct {
    11     // empty
    12 }
    13 
    14 func (self *NoOperandsInstruction) FetchOperands(reader *BytecodeReader) {
    15     // nothing to do
    16 }
    17 
    18 type BranchInstruction struct {
    19     Offset int
    20 }
    21 
    22 func (self *BranchInstruction) FetchOperands(reader *BytecodeReader) {
    23     self.Offset = int(reader.ReadInt16())
    24 }
    25 
    26 type Index8Instruction struct {
    27     Index uint
    28 }
    29 
    30 func (self *Index8Instruction) FetchOperands(reader *BytecodeReader) {
    31     self.Index = uint(reader.ReadUint8())
    32 }
    33 
    34 type Index16Instruction struct {
    35     Index uint
    36 }
    37 
    38 func (self *Index16Instruction) FetchOperands(reader *BytecodeReader) {
    39     self.Index = uint(reader.ReadUint16())
    40 }

    FetchOperands()方法从字节码中提取操作数,Execute()方法执行指令逻辑,在instruction.go文件中定义了NoOperandsInstruction结构,空操作。

    BranchInstruction表示跳转指令,Offset存放跳转偏移量。Index8Instruction表示对局部变量表中索引的存储和加载,Index表示局部变量表索引。Index16Instruction表示对常量池的索引的存取操作。

    2、BytecodeReader

    在jvmgoinstauctions/base文件夹下创建bytecode_reader.go文件

     1 package base
     2 
     3 type BytecodeReader struct {
     4     code []byte // bytecodes
     5     pc   int
     6 }
     7 
     8 func (self *BytecodeReader) Reset(code []byte, pc int) {
     9     self.code = code
    10     self.pc = pc
    11 }
    12 
    13 func (self *BytecodeReader) PC() int {
    14     return self.pc
    15 }
    16 
    17 func (self *BytecodeReader) ReadInt8() int8 {
    18     return int8(self.ReadUint8())
    19 }
    20 func (self *BytecodeReader) ReadUint8() uint8 {
    21     i := self.code[self.pc]
    22     self.pc++
    23     return i
    24 }
    25 
    26 func (self *BytecodeReader) ReadInt16() int16 {
    27     return int16(self.ReadUint16())
    28 }
    29 func (self *BytecodeReader) ReadUint16() uint16 {
    30     byte1 := uint16(self.ReadUint8())
    31     byte2 := uint16(self.ReadUint8())
    32     return (byte1 << 8) | byte2
    33 }
    34 
    35 func (self *BytecodeReader) ReadInt32() int32 {
    36     byte1 := int32(self.ReadUint8())
    37     byte2 := int32(self.ReadUint8())
    38     byte3 := int32(self.ReadUint8())
    39     byte4 := int32(self.ReadUint8())
    40     return (byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4
    41 }
    42 
    43 // used by lookupswitch and tableswitch
    44 func (self *BytecodeReader) ReadInt32s(n int32) []int32 {
    45     ints := make([]int32, n)
    46     for i := range ints {
    47         ints[i] = self.ReadInt32()
    48     }
    49     return ints
    50 }
    51 
    52 // used by lookupswitch and tableswitch
    53 func (self *BytecodeReader) SkipPadding() {
    54     for self.pc%4 != 0 {
    55         self.ReadUint8()
    56     }
    57 }

    code存放字节码,pc记录读取到那个字节,并实现一系列Read函数。

    三、常量指令

    1、nop指令

    nop指令是一条什么都不做的指令,在jvmgoinstructionsconstants文件夹下创建nop.go

     1 package constants
     2 
     3 import "jvmgo/instructions/base"
     4 import "jvmgo/rtda"
     5 
     6 // Do nothing
     7 type NOP struct{ base.NoOperandsInstruction }
     8 
     9 func (self *NOP) Execute(frame *rtda.Frame) {
    10     // really do nothing
    11 }

    2、const系列指令

    创建const.go文件

     1 package constants
     2 
     3 import "jvmgo/instructions/base"
     4 import "jvmgo/rtda"
     5 
     6 // Push null
     7 type ACONST_NULL struct{ base.NoOperandsInstruction }
     8 
     9 func (self *ACONST_NULL) Execute(frame *rtda.Frame) {
    10     frame.OperandStack().PushRef(nil)
    11 }
    12 
    13 // Push double
    14 type DCONST_0 struct{ base.NoOperandsInstruction }
    15 
    16 func (self *DCONST_0) Execute(frame *rtda.Frame) {
    17     frame.OperandStack().PushDouble(0.0)
    18 }
    19 
    20 type DCONST_1 struct{ base.NoOperandsInstruction }
    21 
    22 func (self *DCONST_1) Execute(frame *rtda.Frame) {
    23     frame.OperandStack().PushDouble(1.0)
    24 }
    25 
    26 // Push float
    27 type FCONST_0 struct{ base.NoOperandsInstruction }
    28 
    29 func (self *FCONST_0) Execute(frame *rtda.Frame) {
    30     frame.OperandStack().PushFloat(0.0)
    31 }
    32 
    33 type FCONST_1 struct{ base.NoOperandsInstruction }
    34 
    35 func (self *FCONST_1) Execute(frame *rtda.Frame) {
    36     frame.OperandStack().PushFloat(1.0)
    37 }
    38 
    39 type FCONST_2 struct{ base.NoOperandsInstruction }
    40 
    41 func (self *FCONST_2) Execute(frame *rtda.Frame) {
    42     frame.OperandStack().PushFloat(2.0)
    43 }
    44 
    45 // Push int constant
    46 type ICONST_M1 struct{ base.NoOperandsInstruction }
    47 
    48 func (self *ICONST_M1) Execute(frame *rtda.Frame) {
    49     frame.OperandStack().PushInt(-1)
    50 }
    51 
    52 type ICONST_0 struct{ base.NoOperandsInstruction }
    53 
    54 func (self *ICONST_0) Execute(frame *rtda.Frame) {
    55     frame.OperandStack().PushInt(0)
    56 }
    57 
    58 type ICONST_1 struct{ base.NoOperandsInstruction }
    59 
    60 func (self *ICONST_1) Execute(frame *rtda.Frame) {
    61     frame.OperandStack().PushInt(1)
    62 }
    63 
    64 type ICONST_2 struct{ base.NoOperandsInstruction }
    65 
    66 func (self *ICONST_2) Execute(frame *rtda.Frame) {
    67     frame.OperandStack().PushInt(2)
    68 }
    69 
    70 type ICONST_3 struct{ base.NoOperandsInstruction }
    71 
    72 func (self *ICONST_3) Execute(frame *rtda.Frame) {
    73     frame.OperandStack().PushInt(3)
    74 }
    75 
    76 type ICONST_4 struct{ base.NoOperandsInstruction }
    77 
    78 func (self *ICONST_4) Execute(frame *rtda.Frame) {
    79     frame.OperandStack().PushInt(4)
    80 }
    81 
    82 type ICONST_5 struct{ base.NoOperandsInstruction }
    83 
    84 func (self *ICONST_5) Execute(frame *rtda.Frame) {
    85     frame.OperandStack().PushInt(5)
    86 }
    87 
    88 // Push long constant
    89 type LCONST_0 struct{ base.NoOperandsInstruction }
    90 
    91 func (self *LCONST_0) Execute(frame *rtda.Frame) {
    92     frame.OperandStack().PushLong(0)
    93 }
    94 
    95 type LCONST_1 struct{ base.NoOperandsInstruction }
    96 
    97 func (self *LCONST_1) Execute(frame *rtda.Frame) {
    98     frame.OperandStack().PushLong(1)
    99 }
    const.go

    3、bipush和sipush

    创建ipush.go文件

     1 package constants
     2 
     3 import "jvmgo/ch05/instructions/base"
     4 import "jvmgo/ch05/rtda"
     5 
     6 // Push byte
     7 type BIPUSH struct {
     8     val int8
     9 }
    10 
    11 func (self *BIPUSH) FetchOperands(reader *base.BytecodeReader) {
    12     self.val = reader.ReadInt8()
    13 }
    14 func (self *BIPUSH) Execute(frame *rtda.Frame) {
    15     i := int32(self.val)
    16     frame.OperandStack().PushInt(i)
    17 }
    18 
    19 // Push short
    20 type SIPUSH struct {
    21     val int16
    22 }
    23 
    24 func (self *SIPUSH) FetchOperands(reader *base.BytecodeReader) {
    25     self.val = reader.ReadInt16()
    26 }
    27 func (self *SIPUSH) Execute(frame *rtda.Frame) {
    28     i := int32(self.val)
    29     frame.OperandStack().PushInt(i)
    30 }
    ipush.go

    四、加载指令

    加载指令是从局部变量表获取变量,然后推入操作数栈顶。

    创建jvmgoinstructionsloads文件夹,定义iload.go文件

     1 package loads
     2 
     3 import "jvmgo/instructions/base"
     4 import "jvmgo/rtda"
     5 
     6 // Load int from local variable
     7 type ILOAD struct{ base.Index8Instruction }
     8 
     9 func (self *ILOAD) Execute(frame *rtda.Frame) {
    10     _iload(frame, self.Index)
    11 }
    12 
    13 type ILOAD_0 struct{ base.NoOperandsInstruction }
    14 
    15 func (self *ILOAD_0) Execute(frame *rtda.Frame) {
    16     _iload(frame, 0)
    17 }
    18 
    19 type ILOAD_1 struct{ base.NoOperandsInstruction }
    20 
    21 func (self *ILOAD_1) Execute(frame *rtda.Frame) {
    22     _iload(frame, 1)
    23 }
    24 
    25 type ILOAD_2 struct{ base.NoOperandsInstruction }
    26 
    27 func (self *ILOAD_2) Execute(frame *rtda.Frame) {
    28     _iload(frame, 2)
    29 }
    30 
    31 type ILOAD_3 struct{ base.NoOperandsInstruction }
    32 
    33 func (self *ILOAD_3) Execute(frame *rtda.Frame) {
    34     _iload(frame, 3)
    35 }
    36 
    37 func _iload(frame *rtda.Frame, index uint) {
    38     val := frame.LocalVars().GetInt(index)
    39     frame.OperandStack().PushInt(val)
    40 }

    同理可以定义类似的aload.go、dload.go、fload.go、lload.go文件

    五、存储指令

    存储指令和加载指令相反,把变量从操作数栈顶弹出,然后存入局部变量表。也可分作六类

    在jvmgoinstructionsstores文件夹下创建lstore.go文件

     1 package stores
     2 
     3 import "jvmgo/instructions/base"
     4 import "jvmgo/rtda"
     5 
     6 // Store long into local variable
     7 type LSTORE struct{ base.Index8Instruction }
     8 
     9 func (self *LSTORE) Execute(frame *rtda.Frame) {
    10     _lstore(frame, uint(self.Index))
    11 }
    12 
    13 type LSTORE_0 struct{ base.NoOperandsInstruction }
    14 
    15 func (self *LSTORE_0) Execute(frame *rtda.Frame) {
    16     _lstore(frame, 0)
    17 }
    18 
    19 type LSTORE_1 struct{ base.NoOperandsInstruction }
    20 
    21 func (self *LSTORE_1) Execute(frame *rtda.Frame) {
    22     _lstore(frame, 1)
    23 }
    24 
    25 type LSTORE_2 struct{ base.NoOperandsInstruction }
    26 
    27 func (self *LSTORE_2) Execute(frame *rtda.Frame) {
    28     _lstore(frame, 2)
    29 }
    30 
    31 type LSTORE_3 struct{ base.NoOperandsInstruction }
    32 
    33 func (self *LSTORE_3) Execute(frame *rtda.Frame) {
    34     _lstore(frame, 3)
    35 }
    36 
    37 func _lstore(frame *rtda.Frame, index uint) {
    38     val := frame.OperandStack().PopLong()
    39     frame.LocalVars().SetLong(index, val)
    40 }

    六、栈指令

    为了使用栈指令需要给jvmgostdaoperand_stack.go文件增加两个函数

    1 func (self *OperandStack) PushSlot(slot Slot) {
    2     self.slots[self.size] = slot
    3     self.size++
    4 }
    5 func (self *OperandStack) PopSlot() Slot {
    6     self.size--
    7     return self.slots[self.size]
    8 }

    pop和pop2指令将栈顶元素弹出,pop2为两个字节,dup指令复制栈顶元素,swap交换栈顶的两个变量。

    七、数学指令

    1、算术指令

    包括加、减、乘、除、求余、取反指令

    2、位移指令

    在jvmgoinstructionsmath下创建sh.go文件包括六条位移指令

     1 package math
     2 
     3 import "jvmgo/instructions/base"
     4 import "jvmgo/rtda"
     5 
     6 // Shift left int
     7 type ISHL struct{ base.NoOperandsInstruction }
     8 
     9 func (self *ISHL) Execute(frame *rtda.Frame) {
    10     stack := frame.OperandStack()
    11     v2 := stack.PopInt()
    12     v1 := stack.PopInt()
    13     s := uint32(v2) & 0x1f
    14     result := v1 << s
    15     stack.PushInt(result)
    16 }
    17 
    18 // Arithmetic shift right int
    19 type ISHR struct{ base.NoOperandsInstruction }
    20 
    21 func (self *ISHR) Execute(frame *rtda.Frame) {
    22     stack := frame.OperandStack()
    23     v2 := stack.PopInt()
    24     v1 := stack.PopInt()
    25     s := uint32(v2) & 0x1f
    26     result := v1 >> s
    27     stack.PushInt(result)
    28 }
    29 
    30 // Logical shift right int
    31 type IUSHR struct{ base.NoOperandsInstruction }
    32 
    33 func (self *IUSHR) Execute(frame *rtda.Frame) {
    34     stack := frame.OperandStack()
    35     v2 := stack.PopInt()
    36     v1 := stack.PopInt()
    37     s := uint32(v2) & 0x1f
    38     result := int32(uint32(v1) >> s)
    39     stack.PushInt(result)
    40 }
    41 
    42 // Shift left long
    43 type LSHL struct{ base.NoOperandsInstruction }
    44 
    45 func (self *LSHL) Execute(frame *rtda.Frame) {
    46     stack := frame.OperandStack()
    47     v2 := stack.PopInt()
    48     v1 := stack.PopLong()
    49     s := uint32(v2) & 0x3f
    50     result := v1 << s
    51     stack.PushLong(result)
    52 }
    53 
    54 // Arithmetic shift right long
    55 type LSHR struct{ base.NoOperandsInstruction }
    56 
    57 func (self *LSHR) Execute(frame *rtda.Frame) {
    58     stack := frame.OperandStack()
    59     v2 := stack.PopInt()
    60     v1 := stack.PopLong()
    61     s := uint32(v2) & 0x3f
    62     result := v1 >> s
    63     stack.PushLong(result)
    64 }
    65 
    66 // Logical shift right long
    67 type LUSHR struct{ base.NoOperandsInstruction }
    68 
    69 func (self *LUSHR) Execute(frame *rtda.Frame) {
    70     stack := frame.OperandStack()
    71     v2 := stack.PopInt()
    72     v1 := stack.PopLong()
    73     s := uint32(v2) & 0x3f
    74     result := int64(uint64(v1) >> s)
    75     stack.PushLong(result)
    76 }

    3、布尔指令

    有位与、位或、按位异或三种指令

    八、类型转换指令

    创建jvmgoinstructionsconversions文件夹

    x2y,把x类型转换成y类型,使用go语言带有的类型转换

    九、比较指令

    创建jvmgoinstructionscomparisons文件夹

    十、控制指令

    创建jvmgoinstructionscontrol文件夹

    十一、扩展指令

    创建jvmgoinstructionsextended文件夹

    十二、解释器

    在jvmgo文件夹下创建interpreter.go文件

     1 package main
     2 
     3 import "fmt"
     4 import "jvmgo/classfile"
     5 import "jvmgo/instructions"
     6 import "jvmgo/instructions/base"
     7 import "jvmgo/rtda"
     8 
     9 func interpret(methodInfo *classfile.MemberInfo) {
    10     codeAttr := methodInfo.CodeAttribute()
    11     maxLocals := codeAttr.MaxLocals()
    12     maxStack := codeAttr.MaxStack()
    13     bytecode := codeAttr.Code()
    14 
    15     thread := rtda.NewThread()
    16     frame := thread.NewFrame(maxLocals, maxStack)
    17     thread.PushFrame(frame)
    18 
    19     defer catchErr(frame)
    20     loop(thread, bytecode)
    21 }
    22 
    23 func catchErr(frame *rtda.Frame) {
    24     if r := recover(); r != nil {
    25         fmt.Printf("LocalVars:%v
    ", frame.LocalVars())
    26         fmt.Printf("OperandStack:%v
    ", frame.OperandStack())
    27         panic(r)
    28     }
    29 }
    30 
    31 func loop(thread *rtda.Thread, bytecode []byte) {
    32     frame := thread.PopFrame()
    33     reader := &base.BytecodeReader{}
    34 
    35     for {
    36         pc := frame.NextPC()
    37         thread.SetPC(pc)
    38 
    39         // decode
    40         reader.Reset(bytecode, pc)
    41         opcode := reader.ReadUint8()
    42         inst := instructions.NewInstruction(opcode)
    43         inst.FetchOperands(reader)
    44         frame.SetNextPC(reader.PC())
    45 
    46         // execute
    47         fmt.Printf("pc:%2d inst:%T %v
    ", pc, inst, inst)
    48         inst.Execute(frame)
    49     }
    50 }
    interpreter.go

     并在jvmgo tda hread.go新建Thread结构体的NewFrame()函数

    func (self *Thread) NewFrame(maxLocals, maxStack uint) *Frame {
        return newFrame(self, maxLocals, maxStack)
    }

    rtdaFrame.go也有改变

    // stack frame
    type Frame struct {
        lower        *Frame // stack is implemented as linked list
        localVars    LocalVars
        operandStack *OperandStack
        thread       *Thread
        nextPC       int // the next instruction after the call
        // todo
    }
    
    func NewFrame(thread *Thread,maxLocals, maxStack uint) *Frame {
        return &Frame{
            thread:        thread
            localVars:    newLocalVars(maxLocals),
            operandStack: newOperandStack(maxStack),
        }
    }

    十三、测试

    更改main.go里面的startJVM()函数

    func startJVM(cmd *Cmd) {
        cp := classpath.Parse(cmd.XjreOption, cmd.cpOption)
        className := strings.Replace(cmd.class, ".", "/", -1)
        cf := loadClass(className, cp)
        mainMethod := getMainMethod(cf)
        if mainMethod != nil {
            interpret(mainMethod)
        } else {
            fmt.Printf("Main method not found in class %s
    ", cmd.class)
        }
    }
    
    func loadClass(className string, cp *classpath.Classpath) *classfile.ClassFile {
        classData, _, err := cp.ReadClass(className)
        if err != nil {
            panic(err)
        }
    
        cf, err := classfile.Parse(classData)
        if err != nil {
            panic(err)
        }
    
        return cf
    }
    
    func getMainMethod(cf *classfile.ClassFile) *classfile.MemberInfo {
        for _, m := range cf.Methods() {
            if m.Name() == "main" && m.Descriptor() == "([Ljava/lang/String;)V" {
                return m
            }
        }
        return nil
    }

    通过命令行进行编译,之后通过执行GaussTest程序测试

    GaussTest.java

    public class GaussTest {
        
        public static void main(String[] args) {
            int sum = 0;
            for (int i = 1; i <= 100; i++) {
                sum += i;
            }
            System.out.println(sum);
        }
        
    }

    测试结果

    PS D:Program_Filesgoin> .jvmgo.exe GaussTest
    pc: 0 inst:*constants.ICONST_0 &{{}}
    pc: 1 inst:*stores.ISTORE_1 &{{}}
    pc: 2 inst:*constants.ICONST_1 &{{}}
    pc: 3 inst:*stores.ISTORE_2 &{{}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    pc:10 inst:*loads.ILOAD_1 &{{}}
    pc:11 inst:*loads.ILOAD_2 &{{}}
    pc:12 inst:*math.IADD &{{}}
    pc:13 inst:*stores.ISTORE_1 &{{}}
    pc:14 inst:*math.IINC &{2 1}
    pc:17 inst:*control.GOTO &{{-13}}
    pc: 4 inst:*loads.ILOAD_2 &{{}}
    pc: 5 inst:*constants.BIPUSH &{100}
    pc: 7 inst:*comparisons.IF_ICMPGT &{{13}}
    LocalVars:[{0 <nil>} {5050 <nil>} {101 <nil>}]
    OperandStack:&{0 [{101 <nil>} {100 <nil>}]}
    panic: Unsupported opcode: 0xb2! [recovered]
            panic: Unsupported opcode: 0xb2!
    
    goroutine 1 [running]:
    main.catchErr(0xc04244a3c0)
            D:/Program_Files/go/src/jvmgo/interpreter.go:27 +0x173
    panic(0x4ef5a0, 0xc04203c730)
            D:/APP/GO/src/runtime/panic.go:502 +0x237
    jvmgo/instructions.NewInstruction(0xc0420095b2, 0xc04244a3c0, 0xc0425e7dd0)
            D:/Program_Files/go/src/jvmgo/instructions/factory.go:577 +0x1a3c
    main.loop(0xc04203c720, 0xc0425c896e, 0x1c, 0x25a)
            D:/Program_Files/go/src/jvmgo/interpreter.go:42 +0x1c3
    main.interpret(0xc04244a380)
            D:/Program_Files/go/src/jvmgo/interpreter.go:20 +0x1f2
    main.startJVM(0xc042080000)
            D:/Program_Files/go/src/jvmgo/main.go:27 +0xf9
    main.main()
            D:/Program_Files/go/src/jvmgo/main.go:17 +0x5d
    View Code
  • 相关阅读:
    StringBuffer和StringBuilder
    String类
    软件设计师考点总结(一)
    基于 Axis2的webService接口的基本开发步骤
    Linux学习Day10:LVM(逻辑卷管理器)
    Linux学习Day9:使用RAID(独立冗余磁盘阵列)
    Linux学习Day8:挂载硬盘设备、添加交换分区
    Linux学习Day7:用户身份与文件权限、su命令与sudo服务
    Linux学习Day6:编写Shell脚本、配置计划任务
    Linux学习Day5:Vim编辑器、配置网卡、配置Yum软件本地仓库
  • 原文地址:https://www.cnblogs.com/pingxin/p/p00084.html
Copyright © 2011-2022 走看看