在invokevirtual之后#做什么

问题描述 投票:1回答:1

例如,如果int变量a和b存储在局部变量1和2中,则此代码将计算this.f(3+b*a)。 (这个指针存储在变量0中)

iload_1
aload_0
icons_3
iload_1
iload_1
imul
iadd
invokevirtual #4

为什么#4站在这里?

java-bytecode-asm invokevirtual
1个回答
3
投票

这是类文件的常量池的索引;它说invokevirtual的操作数存储在常量池的索引#4(将是Constant_MethodRef_info。)如果你用javap标志调用-v,它将转储常量池,你会看到索引#4它正在调用什么类和方法。

© www.soinside.com 2019 - 2024. All rights reserved.