summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSuleyman Farajli <suleyman@farajli.net>2024-12-28 16:40:51 +0400
committerSuleyman Farajli <suleyman@farajli.net>2024-12-28 16:40:51 +0400
commit7fd43788215c32485bf2028756e0dcd63eee498a (patch)
treec063701b7813b4ac76fcdc69185b1f9daf138bb9 /src
parent9cfea3690208ec522a2aa2df16b6fc5ce6eb4227 (diff)
`return` function added
Diffstat (limited to 'src')
-rw-r--r--src/main.go10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/main.go b/src/main.go
index ae7524c..a31b5b5 100644
--- a/src/main.go
+++ b/src/main.go
@@ -22,7 +22,7 @@ func readfile(path string) []string {
tmp := reg.Split(string(dat), -1);
/* TODO: add comments */
- for i := range tmp{
+ for i := range tmp {
if tmp[i] != "" {
raw = append(raw, tmp[i]);
}
@@ -137,6 +137,12 @@ func compile(raw[]string) {
fmt.Printf(" jmp .loop%d\n", looplabels[len(looplabels) - 1])
fmt.Printf(".endloop%d:\n", looplabels[len(looplabels) - 1])
looplabels = looplabels[:len(looplabels) - 1]
+ /* Functions */
+ case "return":
+ print(" ;; RETURN")
+ print(" pop rdi")
+ print(" mov rax, 60")
+ print(" syscall")
default:
panic("invalid word")
@@ -221,7 +227,7 @@ func compile(raw[]string) {
print(" syscall");
print(" nop");
print(" leave");
- print(" ret")
+ print(" ret");
}
func main() {