我应该如何解释 JVM 指令集文档中的“操作数堆栈”?

问题描述

我正在阅读第 6. The Java Virtual Machine Instruction Set

当我阅读下面摘录中的“操作数堆栈”时,我不确定如何解释该部分。尤其是箭头,是栈内还是栈外的意思?

mnemonic
Operation
    Short description of the instruction

Format

    mnemonic
    operand1
    operand2
    ...
Forms
    mnemonic = opcode

Operand Stack
    ...,value1,value2 →

    ...,value3

Description
    A longer description detailing constraints on operand stack contents or constant pool entries,the operation performed,the type of the results,etc.

解决方法

我想这在“注释”部分有解释:

在 Java 虚拟机指令的描述中,指令执行对当前帧(第 2.6 节)的操作数堆栈(第 2.6.2 节)的影响以文本形式表示,堆栈从左到右增长,每个值分别表示。因此,

...,value1,value2 →

...,结果

显示了一个操作,它开始时将 value2 放在操作数堆栈的顶部,而 value1 就在它的下面。

,

顶部有说明

在Java虚拟机指令的描述中, 指令执行对操作数堆栈 (§2.6.2) 的影响 当前帧 (§2.6) 以文本形式表示,带有堆栈 从左到右增长,每个值分别表示。 因此,

...,value2 →

...,result

显示了一个操作,它以在操作数的顶部有 value2 开始 与 value1 的堆栈就在它下面。作为执行的结果 指令,value1 和 value2 从操作数堆栈中弹出并 替换为结果值,结果值已由 操作说明。操作数栈的剩余部分,由一个 省略号 (...),不受指令执行的影响。

long 和 double 类型的值由单个条目表示 操作数栈。