diff options
author | Suleyman Farajli <suleyman@farajli.net> | 2024-12-28 16:40:51 +0400 |
---|---|---|
committer | Suleyman Farajli <suleyman@farajli.net> | 2024-12-28 16:40:51 +0400 |
commit | 7fd43788215c32485bf2028756e0dcd63eee498a (patch) | |
tree | c063701b7813b4ac76fcdc69185b1f9daf138bb9 /src | |
parent | 9cfea3690208ec522a2aa2df16b6fc5ce6eb4227 (diff) |
`return` function added
Diffstat (limited to 'src')
-rw-r--r-- | src/main.go | 10 |
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() { |