EIP-4750: EOF Functions

JUMPDEST (0x5b ) instruction is renamed to NOP (“no operation”)

This nomenclature makes sense for EOF code, but if legacy contracts are to continue being executed, we need to retain JUMPDEST.

Or is the idea that EOF enables versioning of the opcode table, and therefore different versions will include different names for opcodes? So EOFv1’s version of the opcode table will see JUMPDEST replaced by NOP?

Noting also that EIP-5450 mentions the following:

Remark: We rely on the notions of operand stack and type section as defined by EIP-4750

However, I don’t see a clear definition of “operand stack” in this EIP.

Exactly. And EOF and legacy contracts can call each other.

Prior to EOF it’s just “the stack,” but with the addition of a return stack (in this EIP) it needed to be distinguished, hence “operand stack.” Other EIPs call what is taken off of “the stack” operands.

1 Like