Examples
Basic Programs
Simple Addition
// Add two numbers (5 + 3)
let program = vec![
    OpCode::Push1 as u8, 5,  // Push 5 onto stack
    OpCode::Push1 as u8, 3,  // Push 3 onto stack
    OpCode::Add as u8,       // Add them together
    OpCode::Log as u8,       // Log result
    OpCode::Halt as u8       // Stop execution
];This basic example demonstrates:
- → Stack manipulation
- → Arithmetic operations
- → Program termination
Token Operations
Token Transfer
// Transfer SPL tokens
let program = vec![
    // Load accounts
    OpCode::Push1 as u8, 1,  // Token program
    OpCode::Push1 as u8, 2,  // Source account
    OpCode::Push1 as u8, 3,  // Destination account
    OpCode::Push1 as u8, 4,  // Authority
    
    // Amount (50 tokens)
    OpCode::Push8 as u8, 
    50, 0, 0, 0, 0, 0, 0, 0,
    
    // Execute transfer
    OpCode::SPLOp as u8,
    SPLOperation::Transfer as u8,
    
    OpCode::Halt as u8
];This example shows:
- → SPL token integration
- → Account management
- → Multi-byte operations
Smart Contracts
On-Chain Vault
// Simple vault program
let program = vec![
    // Initialize vault
    OpCode::Push1 as u8, 0x01,  // Vault account
    OpCode::Push1 as u8, 0x00,  // Load init flag
    OpCode::Load as u8,
    OpCode::JumpI as u8,        // Skip if initialized
    
    // Set initialization flag
    OpCode::Push1 as u8, 0x01,
    OpCode::Push1 as u8, 0x00,
    OpCode::Store as u8,
    
    // Handle deposit/withdraw
    OpCode::Push1 as u8, 0x02,  // Action type
    OpCode::JumpI as u8,        // Branch on action
    
    OpCode::Halt as u8
];This contract demonstrates:
- → State management
- → Control flow
- → Memory operations
Advanced Usage
Oracle Integration
// Price feed oracle
let program = vec![
    // Get latest price
    OpCode::Push1 as u8, 1,     // Oracle account
    OpCode::Load as u8,         // Load price data
    
    // Validate timestamp
    OpCode::Push8 as u8,        // Current time
    0, 0, 0, 0, 0, 0, 0, 0,    // (filled at runtime)
    OpCode::Sub as u8,
    
    // Check staleness
    OpCode::Push8 as u8,        // Max age
    60, 0, 0, 0, 0, 0, 0, 0,   // 60 seconds
    OpCode::GT as u8,
    OpCode::JumpI as u8,        // Revert if stale
    
    // Use price data
    OpCode::MulDiv as u8,       // Price calculations
    
    OpCode::Halt as u8
];This advanced example shows:
- → External data integration
- → Time-based validation
- → Complex calculations