This EIP defines EOF support for EVM64 with its additional code validation rules and RJUMPI
, RJUMPV
opcodes.
EOF defines a stricter stricter code validation rule to improve efficiency. Due to EVM64 using multibyte opcode (the mode opcode C0
), a small adaptation is needed. This EIP also additionally defines a 64-bit mode RJUMPI
and RJUMPV
to be 64-bit.
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 and RFC 8174.
We define the following gas cost constant:
Name | Gas |
---|---|
G_RJUMPIV64 |
3 |
At EOF contract creation time as defined in EIP-3670, if the opcode C0
is encountered and it is not part of PUSH opcode's data, then the interpreter MUST validate that:
RJUMPI64
, RJUMPV64
, or one of the core 64-bit opcode defined in EIP-7937 minus JUMP64
and JUMPI64
.For flow operations RJUMPI and RJUMPV, the 64-bit mode has following changes:
RJUMPI64
(0xc0e1), the condition popped from stack is only read for the last 64 bits. Gas cost is G_RJUMPIV64
.RJUMPV64
(0xc0e2), the case popped from stack is only read for the last 64 bits. Gas cost is G_RJUMPIV64
.Note that:
RJUMP
is automatically in 64-bit mode because it does not read or write the stack.For detailed rationale discussion, please see the core EVM64 definition EIP-7937.
No backward compatibility issues found.
To be added.
To be added.
Needs discussion.
Copyright and related rights waived via CC0.