JVM常用指令:常量,变量的压栈出栈指令

本文介绍了JVM中常量压栈、局部变量表压栈、操作数栈出栈及通用指令的使用。包括bipush、iload等指令,用于将数据从局部变量表移动到操作数栈,以及如何通过xstore_n、xastore指令将操作数栈的值存回局部变量或数组。此外,还探讨了通用指令如dup和pop的功能,它们不依赖具体数据类型,简化了指令操作。
摘要由CSDN通过智能技术生成

目录

常量压栈指令

局部变量表压栈指令

操作数栈出栈指令

通用指令


      上一篇日志里用到的指令如bipush,iload等都是JVM常用的指令,它们有各自的分类,如bipush是常量压入操作数栈,iload是将数组指令索引压入操作数栈,根据操作的数据类型不同还可以分为,i开头的是对integer类型操作指令,f开头是对float类型操作指令。每一条字节码指令由一个字节的助记符加上后面的参数组成,例如sipush  100指令一共占用3个字节,sipush占一字节加上后面的参数占两个字节。这些指令有专门负责类型转换的,运算的指令和存储指令,这篇日志总结下从操作范围,也就是从局部变量表到操作数栈之间数据传递,来分类一些JVM常用的指令。

 

常量压栈指令

      常量压栈指令作用是将常数压入操作数栈中,大致有push,ldc和const三类,push前面见过了,在一个两数相加的代码中,首先用到bipush指令将两个常量压入操作数栈里,根据数据大小可以使用bipush或sipush,前者可处理的数据范围在-128~127,后者更大在-32768~32767之间。第二种const类指令负责将一些特定的常量压栈,例如iconst_m1将-1压入操作数栈,aconst_null将null压栈,如果想将浮点类型数据压栈,使用fconst_x,x=1,2,3表示分别将1,2,3压栈&#x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值