This MIP proposes a generic scheme by which new opcodes can be added to the Monad VM, while minimising the risk of collisions with future Ethereum changes.
Disclaimer: I’m currently analyzing the JUMPDEST situation, and might propose a different approach to it (that there are reasons for the extension opcode to be JUMPDEST-analysis neutral).
This is more of an editorial suggestion to current approach:
In the Jumpdest Analysis section, the rule is too weak. In current form 0xEE605B would cause the 0x5B to be an invalid jump destination. I think it should read:
As for PUSH1 opcode, an immediate data byte following a 0xEE byte is skipped over during JUMPDEST analysis.
In particular:
In 0xEE5B the 0x5B is not a valid jump destination
In 0xEE605B the 0x5B is a valid jump destination
In 0xEE615B5Bboth 0x5B’s are valid jump destinations etc.
For completeness: we’re unfortunate EIP-8024 is considered for Amsterdam, complicating things. If it goes in, 0xE6EE5B, 0xEEE65B (and similar) must be dealt with.