EVM Assembly Auxiliary Instructions

These instructions do not have a direct representation in EVM or EraVM instruction sets. Instead, they perform auxiliary operations required for generating the target bytecode.

PUSH [$]

The same as datasize.

PUSH #[$]

The same as dataoffset.

ASSIGNIMMUTABLE

The same as setimmutable.

For more information, see differences with Ethereum.

PUSHIMMUTABLE

The same as loadimmutable.

For more information, see differences with Ethereum.

PUSHLIB

The same as linkersymbol.

PUSHDEPLOYADDRESS

Returns the address the contract is deployed to.

PUSHSIZE

Can be only found in deploy code. On EVM, returns the total size of the runtime code and constructor arguments.

On EraVM, it is always 0, since EraVM does not operate on runtime code in deploy code.

PUSH data

Pushes a data chunk onto the stack. Data chunks are resolved during the processing of input assembly JSON.

PUSH [tag]

Pushes an EVM Legacy Assembly destination block identifier onto the stack.

Tag

Starts a new EVM Legacy Assembly block. Tags are processed during the translation of EVM Legacy Assembly into EthIR.