虚拟机比较指令




ifeq = 153,// 0x99	ifeq	当栈顶int型数值等于0 时跳转
ifne = 154,// 0x9a	ifne	当栈顶int型数值不等于0 时跳转
iflt = 155,// 0x9b	iflt	当栈顶int型数值小于0 时跳转
ifge = 156,// 0x9c	ifge	当栈顶int型数值大于等于0 时跳转
ifgt = 157,// 0x9d	ifgt	当栈顶int型数值大于0 时跳转
ifle = 158,// 0x9e	ifle	当栈顶int型数值小于等于0 时跳转

  

if_icmpeq = 159,// 0x9f	if_icmpeq	比较栈顶两int型数值大小,当结果等于0 时跳转
if_icmpne = 160,// 0xa0	if_icmpne	比较栈顶两int型数值大小,当结果不等于0 时跳转
if_icmplt = 161,// 0xa1	if_icmplt	比较栈顶两int型数值大小,当结果小于0 时跳转
if_icmpge = 162,// 0xa2	if_icmpge	比较栈顶两int型数值大小,当结果大于等于0 时跳转
if_icmpgt = 163,// 0xa3	if_icmpgt	比较栈顶两int型数值大小,当结果大于0 时跳转
if_icmple = 164,// 0xa4	if_icmple	比较栈顶两int型数值大小,当结果小于等于0 时跳转
if_acmpeq = 165,// 0xa5	if_acmpeq	比较栈顶两引用型数值,当结果相等时跳转
if_acmpne = 166,// 0xa6	if_acmpne	比较栈顶两引用型数值,当结果不相等时跳转

  

if_acmp_null = 198,// 0xc6	ifnull	为null时跳转
if_acmp_nonnull = 199,// 0xc7	ifnonnull	不为null时跳转

如上的一些指令有一点规律:

(1)相对应的一对指令的编码是相邻的,如ifeq和ifne的编码是153和154
(2)较小的指令编码是奇数,例如153
只有一个例外就是ifnull和ifnonnull编码分别是198和199,不满足第二个条件  

猜你喜欢

转载自www.cnblogs.com/extjs4/p/9462039.html