JVM 二进制字节码指令汇总

 Constants0x00 ~ 0x1400~20,与常量作相关

Loads0x15 ~ 0x3521~53,与Load操作

Stores0x36 ~ 0x5654~86,与Store操作相关

Sack0x57 ~ 0x5f87~95,与Sack操作相关

Math0x60 ~ 0x8496~132,与Math操作

Conversions0x85 ~ 0x93133~147,与Conversion操作相关

Comparisons0x94 ~ 0xa6148~166,与Comparison操作相关

Control0xa7~0xb1167~177,与Control操作相关

References0xb2 ~ 0xc3178~195,与Reference操作相关

Extended0xc4 ~ 0xc9196~201,扩展指令



序号

节码

 

记符

 

令含义

Constants0x00 ~ 0x1400~20,与常量作相关

 

00

 

0x00

 

nop

 

什么

 

 

01

 

0x01

 

aconst_null

null顶。

 

 

02

 

0x02

 

iconst_m1

int-1

 

 

03

 

0x03

 

iconst_0

int0

 

 

04

 

0x04

 

iconst_1

int1

 

 

05

 

0x05

 

iconst_2

int2

 

 

06

 

0x06

 

iconst_3

int3

 

 

07

 

0x07

 

iconst_4

int4

 

 

08

 

0x08

 

iconst_5

int5

 

 

09

 

0x09

 

lconst_0

long0栈顶

 

 

10

 

0x0a

 

lconst_1

long1栈顶

 

 

11

 

0x0b

 

fconst_0

float0

 

12

 

0x0c

 

fconst_1

float1

 

13

 

0x0d

 

fconst_2

float2

 

14

 

0x0e

 

dconst_0

double0顶。

 

15

 

0x0f

 

dconst_1

double1顶。

 

16

 

0x10

 

bipush

将单-128~127顶。

 

17

 

0x11

 

sipush

将一-32768~32767顶。

 

18

 

0x12

 

ldc

 

intfloatString送至顶。

 

19

 

0x13

 

ldc_w

intfloatString送至(宽

 

20

 

0x14

 

ldc2_w

longdouble型常量值顶(

Loads0x15 ~ 0x3521~53,与Load操作

 

21

 

0x15

 

iload

将指int变量推送

 

22

 

0x16

 

lload

将指long部变量推顶。

 

23

 

0x17

 

fload

将指float量推顶。

 

24

 

0x18

 

dload

将指double变量

 

25

 

0x19

 

aload

将指量推顶。

 

26

 

0x1a

 

iload_0

将第int变量推送

 

27

 

0x1b

 

iload_1

将第int变量推送

 

28

 

0x1c

 

iload_2

将第int变量推送

 

29

 

0x1d

 

iload_3

将第int变量推送

 

30

 

0x1e

 

lload_0

将第long部变量推顶。

 

31

 

0x1f

 

lload_1

将第long部变量推顶。

 

32

 

0x20

 

lload_2

将第long部变量推顶。

 

33

 

0x21

 

lload_3

将第long部变量推顶。

 

34

 

0x22

 

fload_0

将第float量推顶。

 

35

 

0x23

 

fload_1

将第float量推顶。

 

36

 

0x24

 

fload_2

将第float量推

 

37

 

0x25

 

fload_3

将第float量推顶。

 

38

 

0x26

 

dload_0

将第double变量

 

39

 

0x27

 

dload_1

将第double变量

 

40

 

0x28

 

dload_2

将第double变量

 

41

 

0x29

 

dload_3

将第double变量

 

42

 

0x2a

 

aload_0

将第量推顶。

 

43

 

0x2b

 

aload_1

将第量推顶。

 

44

 

0x2c

 

aload_2

将第量推顶。

 

45

 

0x2d

 

aload_3

将第量推顶。

 

46

 

0x2e

 

iaload

int引的值推顶。

 

47

 

0x2f

 

laload

long索引的值

 

48

 

0x30

 

faload

float的值

 

49

 

0x31

 

daload

double引的顶。

 

50

 

0x32

 

aaload

将引值推顶。

 

51

 

0x33

 

baload

booleanbyte型数组指顶。

 

 

52

 

0x34

 

caload

char索引的值

 

53

 

0x35

 

saload

short的值

Stores0x36 ~ 0x5654~86,与Store操作相关

 

54

 

0x36

 

istore

将栈顶int入指定局

 

55

 

0x37

 

lstore

将栈顶long存入指定量。

 

56

 

0x38

 

fstore

将栈顶float指定量。

 

57

 

0x39

 

dstore

将栈顶double入指

 

58

 

0x3a

 

astore

将栈定局

 

59

 

0x3b

 

istore_0

将栈顶int入第一个量。

 

60

 

0x3c

 

istore_1

将栈顶int入第二个量。

 

61

 

0x3d

 

istore_2

将栈顶int入第三个量。

 

62

 

0x3e

 

istore_3

将栈顶int入第四个量。

 

63

 

0x3f

 

lstore_0

将栈顶long存入第一

 

64

 

0x40

 

lstore_1

将栈顶long存入第二

 

65

 

0x41

 

lstore_2

将栈顶long存入第三

 

66

 

0x42

 

lstore_3

将栈顶long存入第四

 

67

 

0x43

 

fstore_0

将栈顶float第一

 

68

 

0x44

 

fstore_1

将栈顶float第二

 

69

 

0x45

 

fstore_2

将栈顶float第三

 

70

 

0x46

 

fstore_3

将栈顶float第四

 

71

 

0x47

 

dstore_0

将栈顶double入第量。

 

72

 

0x48

 

dstore_1

将栈顶double入第量。

 

73

 

0x49

 

dstore_2

将栈顶double入第量。

 

74

 

0x4a

 

dstore_3

将栈顶double入第量。

 

75

 

0x4b

 

astore_0

将栈一个量。

 

76

 

0x4c

 

astore_1

将栈二个量。

 

77

 

0x4d

 

astore_2

将栈三个

 

78

 

0x4e

 

astore_3

将栈四个量。

 

 

79

 

0x4f

 

iastore

将栈顶int入指定数

 

80

 

0x50

 

lastore

将栈顶long存入指定

 

81

 

0x51

 

fastore

将栈顶float指定

 

82

 

0x52

 

dastore

将栈顶double入指置。

 

83

 

0x53

 

aastore

将栈定数置。

 

84

 

0x54

 

bastore

将栈顶booleanbyte型数定索

 

85

 

0x55

 

castore

将栈顶char存入指定位置

 

86

 

0x56

 

sastore

将栈顶short指定

Sack0x57 ~ 0x5f87~95,与Sack操作相关

 

87

 

0x57

 

pop

将栈能是longdouble)。

 

88

 

0x58

 

pop2

将栈longdouble数值

 

89

 

0x59

 

dup

复制压入顶。

 

90

 

0x5a

 

dup_x1

复制制值顶。

 

91

 

0x5b

 

dup_x2

复制或两

 

92

 

0x5c

 

dup2

复制longdouble)其它值并

将复顶。

 

93

 

0x5d

 

dup2_x1

dup_x1

 

94

 

0x5e

 

dup2_x2

dup_x2

 

95

 

0x5f

 

swap

将栈换(能是longdouble类型

)。

Math0x60 ~ 0x8496~132,与Math操作

 

96

 

0x60

 

iadd

将栈int相加并将顶。

 

97

 

0x61

 

ladd

将栈long值相加并

 

98

 

0x62

 

fadd

将栈float加并

 

99

 

0x63

 

dadd

将栈double相加顶。

 

100

 

0x64

 

isub

将栈int相减并将顶。

 

101

 

0x65

 

lsub

将栈long值相减并


 

102

 

0x66

 

fsub

将栈float减并

 

103

 

0x67

 

dsub

将栈double相减顶。

 

104

 

0x68

 

imul

将栈int相乘并将栈顶。。

 

105

 

0x69

 

lmul

将栈long值相乘并

 

106

 

0x6a

 

fmul

将栈float乘并

 

107

 

0x6b

 

dmul

将栈double相乘顶。

 

108

 

0x6c

 

idiv

将栈int相除并将顶。

 

109

 

0x6d

 

ldiv

将栈long值相除并

 

110

 

0x6e

 

fdiv

将栈float除并

 

111

 

0x6f

 

ddiv

将栈double相除顶。

 

112

 

0x70

 

irem

将栈int作取模运

 

113

 

0x71

 

lrem

将栈long值作取模顶。

 

114

 

0x72

 

frem

将栈float取模顶。

 

115

 

0x73

 

drem

将栈double作取栈顶。

 

116

 

0x74

 

ineg

将栈顶int负并将结

 

117

 

0x75

 

lneg

将栈顶long取负并将顶。

 

118

 

0x76

 

fneg

将栈顶float并将顶。

 

119

 

0x77

 

dneg

将栈顶double负并

 

120

 

0x78

 

ishl

int指定位数顶。

 

121

 

0x79

 

lshl

long位指定位

 

122

 

0x7a

 

ishr

int符号)移压入顶。

 

123

 

0x7b

 

lshr

long有符号)果压

 

124

 

0x7c

 

iushr

int符号)移压入顶。

 

125

 

0x7d

 

lushr

long无符号)果压

 

126

 

0x7e

 

iand

将栈int作“按位顶。

 

127

 

0x7f

 

land

将栈long“按栈顶。

 

128

 

0x80

 

ior

将栈int作“按位顶。

 

129

 

0x81

 

lor

将栈long“按栈顶。


 

130

 

0x82

 

ixor

将栈int作“按位栈顶。

 

131

 

0x83

 

lxor

将栈long“按入栈

 

132

 

0x84

 

iinc

将指定int加指定值。

Conversions0x85 ~ 0x93133~147,与Conversion操作相关

 

133

 

0x85

 

i2l

将栈顶int制转换成long将结果压

 

134

 

0x86

 

i2f

将栈顶int换成float将结果压

 

135

 

0x87

 

i2d

将栈顶int制转换成double并将结果入栈

顶。

 

136

 

0x88

 

l2i

将栈顶long强制转换成int将结果压

 

137

 

0x89

 

l2f

将栈顶long强制转换成float将结

顶。

 

138

 

0x8a

 

l2d

将栈顶long强制转换成double将结

顶。

 

139

 

0x8b

 

f2i

将栈顶float转换成int将结果压

 

140

 

0x8c

 

f2l

将栈顶float值强制转long值并将结

顶。

 

141

 

0x8d

 

f2d

将栈顶float转换成double将结压入

顶。

 

142

 

0x8e

 

d2i

将栈顶double制转int并将结果入栈

顶。

 

143

 

0x8f

 

d2l

将栈顶double制转long值并将结

顶。

 

144

 

0x90

 

d2f

将栈顶double制转float数值将结压入

顶。

 

145

 

0x91

 

i2b

将栈顶int制转换成byte将结果压

 

146

 

0x92

 

i2c

将栈顶int制转换成char将结果压

 

147

 

0x93

 

i2s

将栈顶int换成short将结果压

Comparisons0x94 ~ 0xa6148~166,与Comparison操作相关

 

 

148

 

0x94

 

lcmp

比较顶两long数值大小10-1顶。

 

149

 

0x95

 

fcmpl

比较顶两float值大10-1入栈

顶;NaN-1顶。

 

150

 

0x96

 

fcmpg

比较顶两float值大10-1入栈

顶;NaN1入栈顶。

 

151

 

0x97

 

dcmpl

比较顶两double值大将结10-1入栈

顶;NaN-1顶。

 

152

 

0x98

 

dcmpg

比较顶两double值大将结10-1入栈

顶;NaN1入栈顶。

 

153

 

0x99

 

ifeq

当栈顶int等于0时跳

 

154

 

0x9a

 

ifne

当栈顶int0跳转

 

155

 

0x9b

 

iflt

当栈顶int小于0时跳

 

156

 

0x9c

 

ifge

当栈顶int于等0时跳转。

 

157

 

0x9d

 

ifgt

当栈顶int大于0时跳

 

158

 

0x9e

 

ifle

当栈顶int于等0时跳转。

 

159

 

0x9f

 

if_icmpeq

比较顶两int值大小,等于0跳转。

 

160

 

0xa0

 

if_icmpne

比较顶两int值大小,0时跳转。

 

161

 

0xa1

 

if_icmplt

比较顶两int值大小,小于0跳转。

 

162

 

0xa2

 

if_icmpge

比较顶两int值大小,等于0跳转。

 

163

 

0xa3

 

if_icmpgt

比较顶两int值大小,大于0跳转

 

164

 

0xa4

 

if_icmple

比较顶两int值大小,等于0跳转。

 

165

 

0xa5

 

if_acmpeq

比较当结转。

 

166

 

0xa6

 

if_acmpne

比较当结

Control0xa7~0xb1167~177,与Control操作相关

 

167

 

0xa7

 

goto

无条

 

168

 

0xa8

 

jsr

跳转指定16offsetjsr令地压入

栈顶。

 

 

169

 

0xa9

 

ret

返回indexjsrjsr_w

联合使用

 

170

 

0xaa

 

tableswitch

用于switchcase

 

171

 

0xab

 

lookupswitch

用于switchcase

 

172

 

0xac

 

ireturn

从当返回int

 

173

 

0xad

 

lreturn

从当返回long

 

174

 

0xae

 

freturn

从当返回float

 

175

 

0xaf

 

dreturn

从当返回double

 

176

 

0xb0

 

areturn

从当

 

177

 

0xb1

 

return

从当返回void

References0xb2 ~ 0xc3178~195,与Reference操作相关

 

178

 

0xb2

 

getstatic

获取将其

 

179

 

0xb3

 

putstatic

为指

 

180

 

0xb4

 

getfield

获取将其

 

181

 

0xb5

 

putfield

为指

 

182

 

0xb6

 

invokevirtual

调用法。

 

183

 

0xb7

 

invokespecial

调用初始法。

 

184

 

0xb8

 

invokestatic

调用法。

 

185

 

0xb9

 

invokeinterfac

 

e

调用法。

 

186

 

0xba

 

invokedynamic

调用JavaSE 7 令。

 

187

 

0xbb

 

new

创建用值顶。

 

188

 

0xbc

 

newarray

创建intfloatchar

并将顶。

 

189

 

0xbd

 

anewarray

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

 

入栈

 

190

 

0xbe

 

arraylength

获得栈顶。

 

191

 

0xbf

 

athrow

将栈出。

 

 

192

 

0xc0

 

checkcast

检验过将ClassCastException

 

193

 

0xc1

 

instanceof

检验的实1栈顶

0

 

194

 

0xc2

 

monitorenter

获得象的monitor,用于同

 

195

 

0xc3

 

monitorexit

释放象的monitor,用于同

Extended0xc4 ~ 0xc9196~201,扩展指令

 

196

 

0xc4

 

wide

扩展访引宽

 

197

 

0xc5

 

multianewarray

创建指定类型和指的多维组(执该指时,操作栈中

 

必须,并将其入栈

 

198

 

0xc6

 

ifnull

null转。

 

199

 

0xc7

 

ifnonnull

不为null

 

200

 

0xc8

 

goto_w

无条

 

201

 

0xc9

 

jsr_w

跳转指定32移量jsr_w一条

压入顶。

Reserved0xca0xfe0xff202255256,保留指令

 

202

 

0xca

 

breakpoint

调试志。

 

254

 

0xfe

 

impdep1

用于使语言门。

 

255

 

0xff

 

impdep1

用于使语言门。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值