This page is a placeholder. All examples on this page are currently AI-generated and are not correct. This documentation will be completed in the future with accurate, tested examples.
Overview
Opcode: 0x60
Introduced: Frontier (EVM genesis)
PUSH1 pushes a 1-byte immediate value from the bytecode onto the stack. The 1 byte immediately following the opcode is read and zero-padded to 256 bits.
Specification
Stack Input:
Stack Output:
Gas Cost: 3 (GasFastestStep)
Bytecode: 1 byte opcode + 1 byte immediate data
Operation:
Behavior
PUSH1 reads 1 byte from bytecode starting at position pc + 1, interprets it as a big-endian unsigned integer, and pushes the result onto the stack.
Key characteristics:
- Reads exactly 1 byte following opcode
- Big-endian byte order (most significant byte first)
- Zero-padded to 256 bits if less than 32 bytes
- InvalidOpcode if insufficient bytecode remaining
- PC advances by 2 (opcode + data)
Examples
Basic Usage
Solidity Compilation
Assembly Usage
Gas Cost
Cost: 3 gas (GasFastestStep)
All PUSH1-32 instructions cost the same despite different data sizes. Bytecode size impact:
- PUSH1: 2 bytes (1 opcode + 1 data)
- PUSH32: 33 bytes (1 opcode + 32 data)
Comparison:
Common Usage
Small Constants
Big-Endian Encoding
Implementation
Edge Cases
Insufficient Bytecode
Stack Overflow
Out of Gas
Maximum Value
References