jvm指的是什么

发布网友 发布时间:2022-04-26 05:42

我来回答

2个回答

懂视网 时间:2022-05-04 21:25

0x59 dup 复制 栈顶数并将复制压入栈顶。 0x5a dup_x1 复制 栈顶数并将两个复制压入栈顶。 0x5b dup_x2 复制 栈顶数并将三个 ( 或两个 ) 复制 压入栈顶。 0x5c dup2 复制 栈顶一个 (long 或 double 类型的 ) 或两个 ( 其它 ) 数 并将复制压入栈顶。 0x5d dup

0x59 dup复制栈顶数值并将复制值压入栈顶。

0x5a dup_x1复制栈顶数值并将两个复制值压入栈顶。

0x5b dup_x2复制栈顶数值并将三个(或两个)复制值压入栈顶。

0x5c dup2复制栈顶一个(long或 double 类型的)或两个(其它)数值并将复制值压入栈顶。

0x5d dup2_x1 dup_x1 指令的双倍版

0x5e dup2_x2 dup_x2 指令的双倍版

0x5f swap将栈最顶端的两个数值互换(数值不能是 long或 double 类型的)。

0x60 iadd将栈顶两 int 型数值相加并将结果压入栈顶。

0x61 ladd将栈顶两 long型数值相加并将结果压入栈顶。

0x62 fadd将栈顶两 float型数值相加并将结果压入栈顶。

0x63 dadd将栈顶两 double型数值相加并将结果压入栈顶。

0x isub将栈顶两 int 型数值相减并将结果压入栈顶。

0x65

lsub

将栈顶两 long 型数值相减并将结果压入栈顶。

0x66

fsub

将栈顶两 float 型数值相减并将结果压入栈顶。

0x67

dsub

将栈顶两 double 型数值相减并将结果压入栈顶。

0x68

imul

将栈顶两 int 型数值相乘并将结果压入栈顶。。

0x69

lmul

将栈顶两 long 型数值相乘并将结果压入栈顶。

0x6a

fmul

将栈顶两 float 型数值相乘并将结果压入栈顶。

0x6b

dmul

将栈顶两 double 型数值相乘并将结果压入栈顶。

0x6c

idiv

将栈顶两 int 型数值相除并将结果压入栈顶。

0x6d

ldiv

将栈顶两 long 型数值相除并将结果压入栈顶。

0x6e

fdiv

将栈顶两 float 型数值相除并将结果压入栈顶。

0x6f

ddiv

将栈顶两 double 型数值相除并将结果压入栈顶。

0x70

irem

将栈顶两 int 型数值作取模运算并将结果压入栈顶。

0x71

lrem

将栈顶两 long 型数值作取模运算并将结果压入栈顶。

0x72

frem

将栈顶两 float 型数值作取模运算并将结果压入栈顶。

0x73

drem

将栈顶两 double 型数值作取模运算并将结果压入栈顶。

0x74

ineg

将栈顶 int 型数值取负并将结果压入栈顶。

0x75

lneg

将栈顶 long 型数值取负并将结果压入栈顶。

0x76

fneg

将栈顶 float 型数值取负并将结果压入栈顶。

0x77

dneg

将栈顶 double 型数值取负并将结果压入栈顶。

0x78

ishl

将 int 型数值左移位指定位数并将结果压入栈顶。

0x79

lshl

将 long 型数值左移位指定位数并将结果压入栈顶。

0x7a

ishr

将 int 型数值右(有符号)移位指定位数并将结果压入栈顶。

0x7b

lshr

将 long 型数值右(有符号)移位指定位数并将结果压入栈顶。

0x7c

iushr

将 int 型数值右(无符号)移位指定位数并将结果压入栈顶。

0x7d

lushr

将 long 型数值右(无符号)移位指定位数并将结果压入栈顶。

0x7e

iand

将栈顶两 int 型数值作“按位与”并将结果压入栈顶。

0x7f

land

将栈顶两 long 型数值作“按位与”并将结果压入栈顶。

0x80

ior

将栈顶两 int 型数值作“按位或”并将结果压入栈顶。


0x81

lor

将栈顶两 long 型数值作“按位或”并将结果压入栈顶。

0x82

ixor

将栈顶两 int 型数值作“按位异或”并将结果压入栈顶。

0x83

lxor

将栈顶两 long 型数值作“按位异或”并将结果压入栈顶。

0x84

iinc

将指定 int 型变量增加指定值。

0x85

i2l

将栈顶 int 型数值强制转换成 long型数值并将结果压入栈顶。

0x86

i2f

将栈顶 int 型数值强制转换成 float型数值并将结果压入栈顶。

0x87

i2d

将栈顶 int 型数值强制转换成 double型数值并将结果压入栈顶。

0x88

l2i

将栈顶 long 型数值强制转换成 int型数值并将结果压入栈顶。

0x

l2f

将栈顶 long 型数值强制转换成 float型数值并将结果压入栈顶。

0x8a

l2d

将栈顶 long 型数值强制转换成 double型数值并将结果压入栈顶。

0x8b

f2i

将栈顶 float 型数值强制转换成 int型数值并将结果压入栈顶。

0x8c

f2l

将栈顶 float 型数值强制转换成 long型数值并将结果压入栈顶。

0x8d

f2d

将栈顶 float 型数值强制转换成 double型数值并将结果压入栈顶。

0x8e

d2i

将栈顶 double 型数值强制转换成 int型数值并将结果压入栈顶。

0x8f

d2l

将栈顶 double 型数值强制转换成 long型数值并将结果压入栈顶。

0x90

d2f

将栈顶 double 型数值强制转换成 float型数值并将结果压入栈顶。

0x91

i2b

将栈顶 int 型数值强制转换成 byte型数值并将结果压入栈顶。

0x92

i2c

将栈顶 int 型数值强制转换成 char型数值并将结果压入栈顶。

0x93

i2s

将栈顶 int 型数值强制转换成 short型数值并将结果压入栈顶。

0x94

lcmp

比较栈顶两 long 型数值大小,并将结果(1,0,-1)压入栈顶

0x95

fcmpl

比较栈顶两 float 型数值大小,并将结果(1,0,-1)压入栈顶;当其中一个数值为“NaN”时,将-1压入栈顶。

0x96

fcmpg

比较栈顶两 float 型数值大小,并将结果(1,0,-1)压入栈顶;当其中一个数值为“NaN”时,将 1压入栈顶。

0x97

dcmpl

比较栈顶两 double 型数值大小,并将结果(1,0,-1)压入栈顶;当其中一个数值为“NaN”时,将-1压入栈顶。

0x98

dcmpg

比较栈顶两 double 型数值大小,并将结果(1,0,-1)压入栈顶;当其中一个数值为“NaN”时,将 1压入栈顶。

0x99

ifeq

当栈顶 int 型数值等于 0时跳转。

0x9a

ifne

当栈顶 int 型数值不等于 0时跳转。

0x9b

iflt

当栈顶 int 型数值小于 0时跳转。

0x9c

ifge

当栈顶 int 型数值大于等于 0时跳转。

0x9d

ifgt

当栈顶 int 型数值大于 0时跳转。

0x9e

ifle

当栈顶 int 型数值小于等于 0时跳转。

0x9f

if_icmpeq

比较栈顶两 int 型数值大小,当结果等于 0时跳转。

0xa0

if_icmpne

比较栈顶两 int 型数值大小,当结果不等于 0时跳转。

0xa1

if_icmplt

比较栈顶两 int 型数值大小,当结果小于 0时跳转。

0xa2

if_icmpge

比较栈顶两 int 型数值大小,当结果大于等于 0时跳转。

0xa3

if_icmpgt

比较栈顶两 int 型数值大小,当结果大于 0时跳转

0xa4

if_icmple

比较栈顶两 int 型数值大小,当结果小于等于 0时跳转。

0xa5

if_acmpeq

比较栈顶两引用型数值,当结果相等时跳转。

0xa6

if_acmpne

比较栈顶两引用型数值,当结果不相等时跳转。

0xa7

goto

无条件跳转。

0xa8

jsr

跳转至指定 16 位 offset 位置,并将 jsr 下一条指令地址压入栈顶。

0xa9

ret

返回至局部变量指定的 index 的指令位置(一般与 jsr,jsr_w联合使用)。

0xaa

tableswitch

用于 switch 条件跳转,case值连续(可变长度指令)。

0xab

lookupswitch

用于 switch 条件跳转,case值不连续(可变长度指令)。

0xac

ireturn

从当前方法返回 int。

0xad

lreturn

从当前方法返回 long。

0xae

freturn

从当前方法返回 float。

0xaf

dreturn

从当前方法返回 double。

0xb0

areturn

从当前方法返回对象引用。

0xb1

return

从当前方法返回 void。

0xb2

getstatic

获取指定类的静态域,并将其值压入栈顶。

0xb3

putstatic

为指定的类的静态域赋值。

0xb4

getfield

获取指定类的实例域,并将其值压入栈顶。

0xb5

putfield

为指定的类的实例域赋值。

0xb6

invokevirtual

调用实例方法。

0xb7

invokespecial

调用超类构造方法,实例初始化方法,私有方法。

0xb8

invokestatic

调用静态方法。

0xb9

invokeinterfac

e

调用接口方法。

0xba

invokedynamic

调用动态链接方法1。

0xbb

new

创建一个对象,并将其引用值压入栈顶。

0xbc

newarray

创建一个指定原始类型(如 int、float、char......)的数组,并将其引用值压入栈顶。

0xbd

anewarray

创建一个引用型(如类,接口,数组)的数组,并将其引用值压

入栈顶。

0xbe

arraylength

获得数组的长度值并压入栈顶。

0xbf

athrow

将栈顶的异常抛出。

0xc0

checkcast

检验类型转换,检验通过将抛出 ClassCastException。

0xc1 instanceof 检验对象是否是指定的类的实例,如果是将 1 压入栈顶,否则将0 压入栈顶。

0xc2 monitorenter获得对象的 monitor,用于同步方法或同步块。

0xc3 monitorexit释放对象的 monitor,用于同步方法或同步块。

0xc4 wide扩展访问局部变量表的索引宽度。

0xc5 multianewarray创建指定类型和指定维度的数组(执行该指令时,操作栈中必须包各维度的长度值),并将其引用值压入栈顶。

0xc6 ifnull为 null 时跳转。

0xc7 ifnonnull不为 null 时跳转。

0xc8 goto_w无条件跳转(宽索引)。

0xc9 jsr_w跳转至指定 32 位地址偏移量位置,并将 jsr_w 下一条指令地址压入栈顶。

保留指令

0xca breakpoint调试时的断点标志。

0xfe impdep1用于在特定硬件中使用的语言后门。

0xff impdep1用于在特定硬件中使用的语言后门。

热心网友 时间:2022-05-04 18:33

虚拟机概念:指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的计算机系统
JVM使用软件模拟Java字节码的指令集
JVM与VMWare 的区别:VMWare模拟的是真实存在的计算机系统,JVM模拟的是虚拟的,真实不存在的
Java语言规范定义了什么是Java语言
JVM主要定义二进制class文件和JVM指令集,Java语言和JVM相对
JVM整数的表达:
原码:第一位为符号位(0为正数,1为负数),其他为为数字的二进制表示
反码:符号位不动,原码取反
负数补码:符号位不动,反码加1
正数补码:和原码相同
学习java,就来北京尚学堂,优秀的师资和科学的授课方式,会带给你最好的学习体验。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com