The wide instruction modifies the behavior of another instruction. It takes one of two formats, depending on the instruction being modified. The first form of the wide instruction modifies one of the instructions iload, fload, aload, lload, dload, istore, fstore, astore, lstore, dstore, or ret […]. The second form applies only to the iinc instruction[…].
# 1 楼答案
作为the JVMspec says:
因此,
wide
指令用于对加载或存储变量的指令进行编码,这些变量的索引不能用单个byte
寻址,即大于255,或者iinc
指令既有变量索引,也有整数偏移,不适合字节对于前者,我们必须声明尽可能多的局部变量来触发匹配
wide
指令的生成,对于后者,只要有足够大的增量值就足够了:有趣的是,
javap
不打印wide iinc
或wide iload
响应wide istore
,而是iinc_w
、iload_w
和istore_w
。但这只是表明,没有“Java字节码汇编语言”标准