java源代码
void spin() {
int i;for (i = 0; i < 100; i++) {
; // 空循环
}
}
编译后的字节码指令程序
0 iconst_0
// 表示把int型的0值压入操作数栈 iconst_0 后面的0是隐参数
1 istore_1
// 指令作用是从操作数栈中弹出一个int型的值 并保存在第一个局部变量中
2 goto 8
// 第一次直接跳到循环中间
5 iinc 1 1
// iinc指令的作用是对局部变量加上一个长度为1字节有符号的递增量 第一个1意思是第一个局部变量索引1 第 二个1意思是递增1
8 iload_1
// 指令作用是将第一个局部变量的值压入操作数栈。
9 bipush 100
// 表示把int型的100值压入操作数栈
11 if_icmplt 5
// bipush指令将int型的100压入操作数栈,
//然后if_icmplt指令将100从操作数栈中弹出值并与i进行比较,如果满足条件(即i的值小于 100)//,将转移到索引为5的指令继续执行,开始下一轮循环的迭代。否则,
//程序将执行if_icmplt的下一条指令,即return指令
14 return
// 返回
学习资料来源:java虚拟机规范