虚拟机比较指令

Posted extjs4

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了虚拟机比较指令相关的知识,希望对你有一定的参考价值。

 




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,不满足第二个条件  

 

技术分享图片

技术分享图片

技术分享图片

 

技术分享图片

技术分享图片

 

技术分享图片

技术分享图片

 






以上是关于虚拟机比较指令的主要内容,如果未能解决你的问题,请参考以下文章

怎么样理解虚拟机的概念

什么是虚拟机,要怎么用?

写一个玩具Java虚拟机

实现原创指令集的虚拟机

Jvm(41),指令集----虚拟机常用指令

java虚拟机规范阅读Java虚拟机指令集简介