我目前正在使用一些 Java 字节码。我已经阅读了两个操作码:dup和dup2. 如果我理解正确,那么它们之间的唯一区别是第一个只复制一个堆栈词,而第二个复制一对堆栈词。这很好,但它们每个都有自己的子操作码(dup_x1,dup2_x2...)。
dup_x2例如,当我查看 和 的函数时dup2_x1,它们似乎在做同样的事情:按顺序复制前三个值(因此从值val4, val3, val2, val1中有val4, val3, val2, val1, val3, val2, val1)。我很困惑,因为没有理由为同一操作定义两个操作码。
那么这些操作码是做什么用的呢?他们的行动有任何官方参考吗?请帮忙。