【问题标题】:Explanation of JVM bytecodeJVM字节码解释
【发布时间】:2016-04-01 08:56:44
【问题描述】:

谁能解释一下 JVM 操作码旁边的数字是如何计算的? 我认为它就像操作码的 1 个字节和操作数的其余字节。我说的对吗?

例子:

Method int add12and13() 
 0 bipush 12 
 2 bipush 13 
 4 invokestatic #3 // Method Example.addTwoStatic(II)I 
 7 ireturn

【问题讨论】:

  • 有些指令只有1个字节。
  • 如果您对此类主题感兴趣,请先从the official source开始。
  • 如果它满足您的需求,请不要忘记接受答案。否则,请在您的问题中添加尚不清楚的内容。

标签: jvm bytecode


【解决方案1】:

你是对的。这是从方法开始的字节码偏移量。

bipush有1个字节的参数,所以总共需要2个字节。

invokestatic 占用 3 个字节:操作码 + 2 个字节用于常量池索引,即下一条指令的偏移量将是该 invokestatic 的 +3 个字节。

【讨论】:

    猜你喜欢
    • 2020-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-11
    相关资源
    最近更新 更多