"taking operands immediately following the opcode" 是什么意思?

What does "taking operands immediately following the opcode" mean?

我正在看书Inside the Java 2 Virtual Machine,我不明白这是什么意思:

The Java Virtual Machine is stack-based rather than register-based because its instructions take their operands from the operand stack rather than from registers. Instructions can also take operands from other places, such as immediately following the opcode (the byte representing the instruction) in the bytecode stream, or from the constant pool.

谁能帮我解决这个问题:

Instructions can also take operands from other places, such as immediately following the opcode

,也许有一个例子?

这是一种奇特的说法,可以将数据值嵌入字节代码本身。

sipush 指令为例。它将 short 值压入堆栈。 short 的值来自指令后面的两个字节:

sipush <byte1> <byte2>

该段落未提及的另一种情况是当值嵌入操作码本身时,如 iconst_<N> 指令。例如,

iconst_5

将常量 5 加载到堆栈上。 5的值不是来自单独的存储,因为它嵌入了指令操作码的含义。

例如,有一个 iinc 指令将一个常量值添加到局部变量,如下所示:

iinc 1, 8

这意味着 "add 8 to the local variable #1"。字节码中直接写常量8,跟在iinc指令代码和常量1之后:0x84 0x01 0x08.