码迷,mamicode.com
首页 > 其他好文 > 详细

五、指令集和解释器

时间:2018-08-14 18:54:31      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:加载   option   dex   ase   slots   技术分享   指令集   public   div   

一、字节码与指令集

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

二、指令与指令解码

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

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

1、Instruction接口

在jvmgo\instructions\base文件夹下创建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

在jvmgo\instauctions/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指令是一条什么都不做的指令,在jvmgo\instructions\constants文件夹下创建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

四、加载指令

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

创建jvmgo\instructions\loads文件夹,定义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文件

五、存储指令

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

在jvmgo\instructions\stores文件夹下创建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 }

六、栈指令

为了使用栈指令需要给jvmgo\stda\operand_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、位移指令

在jvmgo\instructions\math下创建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、布尔指令

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

 

八、类型转换指令

创建jvmgo\instructions\conversions文件夹

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

九、比较指令

创建jvmgo\instructions\comparisons文件夹

 

十、控制指令

创建jvmgo\instructions\control文件夹

 

十一、扩展指令

创建jvmgo\instructions\extended文件夹

 

十二、解释器

在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\n", frame.LocalVars())
26         fmt.Printf("OperandStack:%v\n", 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\n", pc, inst, inst)
48         inst.Execute(frame)
49     }
50 }
interpreter.go

 并在jvmgo\rtda\thread.go新建Thread结构体的NewFrame()函数

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

rtda\Frame.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\n", 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_Files\go\bin> .\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

 

五、指令集和解释器

标签:加载   option   dex   ase   slots   技术分享   指令集   public   div   

原文地址:https://www.cnblogs.com/pingxin/p/p00084.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!