summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkitty <nepeta@canaglie.net>2026-03-15 14:37:07 +1100
committerkitty <nepeta@canaglie.net>2026-03-15 14:37:07 +1100
commit726c1087c1a52a1fb4799ea6130b10182ed2222a (patch)
tree042a94061eec71ea4c91e9975f5dfc78cf47850e
parentb7674299e50c469b13d2f0eb8320a8dc1925b836 (diff)
template makefile and asm
-rw-r--r--.gitignore2
-rw-r--r--Makefile14
-rw-r--r--readme.md18
-rw-r--r--sanctuary.s13
4 files changed, 47 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..d9ff4c5
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+sanctuary
+sanctuary.o
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..e1a04a7
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,14 @@
+TARGET := sanctuary
+SRCS = sanctuary.s
+
+all: $(TARGET)
+
+$(TARGET): $(TARGET).o
+ ld -N -static -o $@ $<
+
+$(TARGET).o: $(SRCS)
+ nasm -g -F dwarf -f elf64 -o $@ $<
+
+.PHONY: clean
+clean:
+ -rm -f $(TARGET) $(TARGET).o
diff --git a/readme.md b/readme.md
index 8b467c4..2eb22a7 100644
--- a/readme.md
+++ b/readme.md
@@ -2,3 +2,21 @@
sanctuary forth is a 64-bit subroutine threaded forth system
for amd64 linux systems.
+
+## stack effect notation
+
+- `a`: memory address
+- `c`: one byte value
+- `n`: signed integer
+- `u`: unsigned integer
+- `?`: boolean flag
+
+## Glossary
+the following is a list of words available in this forth. (neither of these have been implemented yet i'm just putting them here in the meantime lol)
+
+### `dp ( -- a )`
+`dp` is a variable that contains the lowest free byte of memory in user memory.
+
+### `here ( -- a )`
+`here` yields the address of the first available byte
+in user memory.
diff --git a/sanctuary.s b/sanctuary.s
new file mode 100644
index 0000000..ad8720f
--- /dev/null
+++ b/sanctuary.s
@@ -0,0 +1,13 @@
+; sanctuary
+
+section .bss
+
+resq 4091
+wstk: resq 1
+
+section .text
+global _start
+_start:
+ mov rdi, 0
+ mov rax, 60
+ syscall