JVM常用指令:比较控制和函数调用

本文详细介绍了JVM中的比较控制指令,包括比较、条件跳转和分支跳转,以及函数调用和返回的相关指令。通过实例解析了如何在JVM层面实现条件判断和函数调用的过程,帮助理解JVM指令在程序执行中的作用。
摘要由CSDN通过智能技术生成

目录

比较控制

比较指令

条件跳转

分支跳转

函数调用和返回


      程序的顺序执行需要由条件控制指令来控制,例如条件跳转、比较和分支跳转等,JVM常用指令中有一类控制指令,负责虚拟机有条件地或者无条件地从指定位置执行指令,使得程序按照我们希望的顺序执行。总的来说控制指令分为比较、跳转、比较跳转和有/无条件的分支跳转,同样控制程序执行的还有函数调用和返回指令,这篇日志就来总结这两部分常用的指令。

 

比较控制

比较指令

      比较指令有fcmpg、fcmpl、dcmpg、dcmpl等,和上一篇日志里讲的指令类似,前面的f、d分别表示数据类型float和double,所以如果是long类型的数据则用lcmp。可以看到float和double类型的比较指令都有两个,xcmpg和xcmpl,两者的区别在于处理未定义或者不可表示的值(NaN)时,得到的结果不同,拿fcmpg和fcmpl举例,两条指令都是将栈中弹出两个元素作比较,如果进行比较的两个float值都不是NaN值,两个值相等时,fcmpg和fcmpl都会将“0”压栈,如果第一个值大于第二个值,压入“1”,第一个值小于第二个值,压入“-1”。当有一个或两个值为NaN时,也就是出现未定义或不可表示的值,此时两者无法比较,fcmpg会将“1”压栈,而f

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值