From 0b2aa4e0709e3008f790f1140cf91d4163918dc4 Mon Sep 17 00:00:00 2001 From: Simon Brooke Date: Sun, 12 Apr 2026 13:32:58 +0100 Subject: [PATCH] The tiniest bit of actual progress. --- src/c/memory.h | 6 ++++++ src/c/naegling.c | 15 ++++++++++++--- src/c/version.h | 4 ++-- 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/src/c/memory.h b/src/c/memory.h index 2ed4a9a..bf80de3 100644 --- a/src/c/memory.h +++ b/src/c/memory.h @@ -136,4 +136,10 @@ */ #define payload(obj) ((tag32(obj) < 7) ? ((obj & MASK32) << 4) : (obj << 8)) +#define errorp(obj) (tag32(obj) == ERRORTV) + +#define integerp(obj) (tag32(obj) == INTEGERTV) + +#define charp(obj) (tag32(obj) == CHARTV) + #endif diff --git a/src/c/naegling.c b/src/c/naegling.c index 5a3b302..a2cf07b 100644 --- a/src/c/naegling.c +++ b/src/c/naegling.c @@ -31,6 +31,18 @@ void showbits( unsigned int x ) printf("\n"); } +void show(uint64_t x) { + if(integerp(x)) { + // integer + printf("%d", (int)payload(x)); + } else if(charp(x)) { + // character + printf("#\\%c", (char)payload(x)); + } + // we're compiling Lisp, not Scheme, so we don't have an explicit boolean + // type +} + int main(int argc, char **argv) { printf( "Naegling, a compiler for Beowulf: version %s\n", VERSION); @@ -39,6 +51,3 @@ int main(int argc, char **argv) { printf("%d\n", val); return 0; } - - return 0; -} diff --git a/src/c/version.h b/src/c/version.h index fcce6e1..664e48a 100644 --- a/src/c/version.h +++ b/src/c/version.h @@ -10,6 +10,6 @@ #ifndef __naegling_version_h #define __naegling_version_h -#define VERSIOM "Aelfhere" +#define VERSION "Aelfhere" -#ifndef +#endif