From: Michael D. Lowis Date: Fri, 5 Mar 2021 21:37:49 +0000 (-0500) Subject: reorganized primtives by category X-Git-Url: https://git.mdlowis.com/?a=commitdiff_plain;h=9dc98555822ce56d8fd7dc91ccb980c350f77d8a;p=proto%2Falvm.git reorganized primtives by category --- diff --git a/main.s b/main.s index fd1c134..94385a2 100644 --- a/main.s +++ b/main.s @@ -27,29 +27,29 @@ // Value Tagging //--------------------------------------------------------------------- -.set IMM_BITS_BITMASK, $0x3 -.set IMM_BITS_FIXNUM, $0x1 -.set IMM_BITS_CHARACTER, $0x2 - -.set OBJ_PRIMITIVE, $0x000000000000000 -.set OBJ_BOOLEAN, $0x100000000000000 -.set OBJ_TRUE, $0x100000000000004 -.set OBJ_FALSE, $0x100000000000000 -.set OBJ_NULL, $0x200000000000000 -.set OBJ_PAIR, $0x300000000000000 -.set OBJ_FLONUM, $0x400000000000000 -.set OBJ_SYMBOL, $0x500000000000000 -.set OBJ_STRING, $0x600000000000000 -.set OBJ_VECTOR, $0x700000000000000 -.set OBJ_PORT, $0x800000000000000 -.set OBJ_CLOSURE, $0x900000000000000 -.set OBJ_RESERVED1, $0xA00000000000000 -.set OBJ_RESERVED2, $0xB00000000000000 -.set OBJ_RESERVED3, $0xC00000000000000 -.set OBJ_RESERVED4, $0xD00000000000000 -.set OBJ_RESERVED5, $0xE00000000000000 -.set OBJ_BITMASK, $0xF00000000000003 -.set OBJ_VALUE_MASK, $0x0FFFFFFFFFFFFFC +.set IMM_BITS_BITMASK, 0x3 +.set IMM_BITS_FIXNUM, 0x1 +.set IMM_BITS_CHARACTER, 0x2 + +.set OBJ_PRIMITIVE, 0x000000000000000 +.set OBJ_BOOLEAN, 0x100000000000000 +.set OBJ_TRUE, 0x100000000000004 +.set OBJ_FALSE, 0x100000000000000 +.set OBJ_NULL, 0x200000000000000 +.set OBJ_PAIR, 0x300000000000000 +.set OBJ_FLONUM, 0x400000000000000 +.set OBJ_SYMBOL, 0x500000000000000 +.set OBJ_STRING, 0x600000000000000 +.set OBJ_VECTOR, 0x700000000000000 +.set OBJ_PORT, 0x800000000000000 +.set OBJ_CLOSURE, 0x900000000000000 +.set OBJ_RESERVED1, 0xA00000000000000 +.set OBJ_RESERVED2, 0xB00000000000000 +.set OBJ_RESERVED3, 0xC00000000000000 +.set OBJ_RESERVED4, 0xD00000000000000 +.set OBJ_RESERVED5, 0xE00000000000000 +.set OBJ_BITMASK, 0xF00000000000003 +.set OBJ_VALUE_MASK, 0x0FFFFFFFFFFFFFC //--------------------------------------------------------------------- // Main Routine @@ -97,7 +97,7 @@ EXEC_FUN: NEXT //--------------------------------------------------------------------- -// Primitive Definitions +// Scaffolding Primitives //--------------------------------------------------------------------- // Exit the application @@ -116,12 +116,6 @@ defcode OP_return pushq T1 NEXT -// Pushes an immediate value onto the stack -defcode OP_imm - lodsq - pushq AC - NEXT - // Duplicates the top value on the stack defcode OP_dup movq (SP), AC @@ -175,6 +169,39 @@ defcode OP_stlocn movq T1, (FP, AC, 8) NEXT +//--------------------------------------------------------------------- +// Immediate Value Primitives +//--------------------------------------------------------------------- + +// Pushes an immediate value onto the stack +defcode OP_imm + lodsq + pushq AC + NEXT + +// Pushes a "true" value onto the stack +defcode OP_true + movabsq OBJ_TRUE, AC + pushq AC + NEXT + +// Pushes a "false" value onto the stack +defcode OP_false + movabsq OBJ_FALSE, AC + pushq AC + NEXT + +// Pushes a "null" value onto the stack +defcode OP_null + movabsq OBJ_NULL, AC + pushq AC + NEXT + +//--------------------------------------------------------------------- +// Predicate Primitives +//--------------------------------------------------------------------- + + //--------------------------------------------------------------------- // Main Routine //---------------------------------------------------------------------