]> git.mdlowis.com Git - proto/alvm.git/commitdiff
reorganized primtives by category
authorMichael D. Lowis <mike.lowis@gentex.com>
Fri, 5 Mar 2021 21:37:49 +0000 (16:37 -0500)
committerMichael D. Lowis <mike.lowis@gentex.com>
Fri, 5 Mar 2021 21:37:49 +0000 (16:37 -0500)
main.s

diff --git a/main.s b/main.s
index fd1c1345df20d17d15739d05649f3de4a7d2d4a4..94385a2dda027d65d38c2d72391b25475b7dd621 100644 (file)
--- a/main.s
+++ b/main.s
 // 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
 //---------------------------------------------------------------------