From 7d74d8471701989c27022b62ed3ceace66c02b46 Mon Sep 17 00:00:00 2001 From: navelbuffle Date: Fri, 3 Jan 2025 08:34:30 +0300 Subject: [PATCH] extend CodeTag and OpCode enums with a boolean type --- onchain/src/Push3Interpreter.sol | 37 ++++++++++++++++++++++++++------ 1 file changed, 30 insertions(+), 7 deletions(-) diff --git a/onchain/src/Push3Interpreter.sol b/onchain/src/Push3Interpreter.sol index 3871fab..7a70ffd 100644 --- a/onchain/src/Push3Interpreter.sol +++ b/onchain/src/Push3Interpreter.sol @@ -9,6 +9,11 @@ import "forge-std/console.sol"; * a token-based bytecode approach. */ contract Push3Interpreter { + // ----------------------------------------------------- + // 0. CONSTANTS + // ----------------------------------------------------- + uint8 internal constant OPCODE_BOOL_OFFSET = 0x6; + // ----------------------------------------------------- // 1. ENUMS // ----------------------------------------------------- @@ -16,16 +21,34 @@ contract Push3Interpreter { NO_TAG, // 0 INSTRUCTION, // 1 INT_LITERAL, // 2 - SUBLIST // 3 + SUBLIST, // 3 + BOOL_LITERAL // 4 } enum OpCode { - NOOP, // 0 - INTEGER_PLUS, // 1 - INTEGER_MINUS, // 2 - INTEGER_MULT, // 3 - INTEGER_DUP, // 4 - INTEGER_POP // 5 + NOOP, // 0 + INTEGER_PLUS, // 1 + INTEGER_MINUS, // 2 + INTEGER_MULT, // 3 + INTEGER_DUP, // 4 + INTEGER_POP, // 5 + BOOL_DUP, // OPCODE_BOOL_OFFSET + 0 + BOOL_POP, // OPCODE_BOOL_OFFSET + 1 + BOOL_SWAP, // OPCODE_BOOL_OFFSET + 2 + BOOL_FLUSH, // OPCODE_BOOL_OFFSET + 3 + BOOL_STACKDEPTH, // OPCODE_BOOL_OFFSET + 4 + BOOL_NOT, // OPCODE_BOOL_OFFSET + 5 + BOOL_AND, // OPCODE_BOOL_OFFSET + 6 + BOOL_OR, // OPCODE_BOOL_OFFSET + 7 + BOOL_EQ, // OPCODE_BOOL_OFFSET + 8 + BOOL_FROMFLOAT, // OPCODE_BOOL_OFFSET + 9 + BOOL_FROMINTEGER,// OPCODE_BOOL_OFFSET + 10 + BOOL_ROT, // OPCODE_BOOL_OFFSET + 11 + BOOL_SHOVE, // OPCODE_BOOL_OFFSET + 12 + BOOL_YANK, // OPCODE_BOOL_OFFSET + 13 + BOOL_YANKDUP, // OPCODE_BOOL_OFFSET + 14 + BOOL_DEFINE, // OPCODE_BOOL_OFFSET + 15 + BOOL_RAND // OPCODE_BOOL_OFFSET + 16 } // -----------------------------------------------------