EVM Legacy Assembly
These instructions do not have a direct representation in EVM or ZKsync VM. Instead, they perform auxiliary operations required for generating the target bytecode.
PUSH $
The same as datasize.
LLVM IR codegen references:
PUSH #$
The same as dataoffset.
LLVM IR codegen references:
ASSIGNIMMUTABLE
The same as setimmutable.
For more information, see the Differences with Ethereum.
LLVM IR codegen references:
PUSHIMMUTABLE
The same as loadimmutable.
For more information, see the Differences with Ethereum.
LLVM IR codegen references:
PUSHLIB
The same as linkersymbol.
For more information, see the Differences with Ethereum.
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 ZKsync VM, it is always 0, since ZKsync VM 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.