Validium Docs
  • Overview
  • Connect to Validium
  • Start Coding 🚀
    • Quickstart
      • Overview
      • Deploy using Validium CLI
      • Deploy using Quickstart Repository
      • Deploy your first contract
      • Create an ERC20 token
  • Tooling
    • Block Explorers
    • Hardhat-Validium
      • Overview
      • Installation
      • Guides
        • Getting started
        • Migrating Hardhat project to Validium
        • Compiling non-inlinable libraries
      • Plugins
        • hardhat-zksync
        • hardhat-zksync-solc
        • hardhat-zksync-vyper
        • hardhat-zksync-deploy
        • hardhat-zksync-upgradable
        • hardhat-zksync-verify
        • hardhat-zksync-verify-vyper
        • hardhat-zksync-ethers
        • hardhat-zksync-node
        • Hardhat Community Plugins
    • Foundary
      • Overview
      • Installation
      • Getting Started
      • Migration Guide
        • Overview
        • Compilation
        • Deployment
        • Testing
  • Test and Debug
    • Getting Started
    • Docker L1 - L2 Nodes
    • In-Memory Node
    • Continuous Integration
    • Hardhat
    • Foundry
  • API Reference
    • Overview
    • Conventions
    • ZKs JSON-RPC API
    • Debug JSON-RPC API
    • Ethereum JSON-RPC API
    • PubSub JSON-RPC API
  • Concepts
    • Transaction Lifecycle
    • Blocks and Batches
    • Validium Network Fee Mechanism
    • Finality
    • System Upgrades
    • ZK Chains
    • Data Availability
      • Overview
      • Recreating L2 state from L1 pubdata
      • Validiums
    • Account Abstraction
    • L1 <-> L2 Communication
  • Components
    • Overview
    • Smart & System Contracts
      • Smart Contracts
      • System Contracts
    • Shared Bridges
    • Sequencer / Server
    • Validium Network EVM
      • Overview
      • Bootloader
      • Precompiles
      • Virtual Machine Specification
        • ZKsync Virtual Machine primer
        • VM Formal Specification
    • Prover
      • Overview
      • ZK Terminology
      • Running the Prover
      • Circuits
        • Overview
        • Circuit Testing
        • CodeDecommitter
        • DemuxLogQueue
        • ECRecover
        • KeccakRoundFunction
        • L1MessagesHasher
        • LogSorter
        • Main VM
        • RAMPermutation
        • Sha256RoundFunction
        • StorageApplication
        • Sorting and Deduplicating
          • Overview
          • SortDecommitments
          • StorageSorter
          • LogSorter
      • Boojum Gadgets
      • Boojum Function - `check_if_satisfied`
    • Compiler
      • Compiler Toolchain Overview
        • Compiler Toolchain Overview
        • Solidity Compiler
        • Vyper Compiler
        • LLVM Framework
      • Specification
        • Overview
        • Code Separation
        • System Contracts
        • Exception Handling
        • EVM Legacy Assembly Translator
        • Instructions
          • Instruction Reference
          • EVM
            • Native EVM Instructions
            • Arithmetic
            • Bitwise
            • Block
            • Call
            • Create
            • Environment
            • Logging
            • Logical
            • Memory
            • Return
            • Sha3
            • Stack
          • Extensions
            • Overview
            • Validium Network Extension Simulation (call)
            • Validium Network Extension Simulation (verbatim)
          • EVM Legacy Assembly
          • Yul
        • EraVM Binary Layout
    • Fee Withdrawer
    • Portal - Wallet + Bridge
    • Block Explorer
    • Transaction filtering
Powered by GitBook
On this page
  • PUSH $
  • PUSH #$
  • ASSIGNIMMUTABLE
  • PUSHIMMUTABLE
  • PUSHLIB
  • PUSHDEPLOYADDRESS
  • PUSHSIZE
  • PUSH data
  • PUSH tag
  • Tag
  1. Components
  2. Compiler
  3. Specification
  4. Instructions

EVM Legacy Assembly

PreviousValidium Network Extension Simulation (verbatim)NextYul

Last updated 7 months ago


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

PUSH $

The same as .

LLVM IR codegen references:

PUSH #$

The same as .

LLVM IR codegen references:

ASSIGNIMMUTABLE

The same as .

For more information, see the .

LLVM IR codegen references:

PUSHIMMUTABLE

LLVM IR codegen references:

PUSHLIB

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 Validium VM, it is always 0, since Validium 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.

The same as .

For more information, see the .

The same as .

For more information, see the .

.

.

.

.

.

datasize
zksolc compiler
Shared FE code
dataoffset
zksolc compiler
Shared FE code
setimmutable
Differences with Ethereum
zksolc compiler
Shared FE code
loadimmutable
Differences with Ethereum
zksolc compiler
Shared FE code
linkersymbol
Differences with Ethereum
The LLVM IR generator code
The LLVM IR generator code
The LLVM IR generator code
The LLVM IR generator code
The LLVM IR generator code