diff options
author | Suleyman Farajli <suleyman@farajli.net> | 2024-12-26 18:05:52 +0400 |
---|---|---|
committer | Suleyman Farajli <suleyman@farajli.net> | 2024-12-26 18:05:52 +0400 |
commit | 814d4716ff2072456f30a897ad7ca52388fcf80e (patch) | |
tree | 93020756a86423478acc3dea7ea837ea3d8a481c | |
parent | 00e720bf0814ada8f4c36179d6d732862336cf97 (diff) |
`<` and `>` implemented
-rw-r--r-- | src/main.go | 34 |
1 files changed, 29 insertions, 5 deletions
diff --git a/src/main.go b/src/main.go index eac5fa5..47240be 100644 --- a/src/main.go +++ b/src/main.go @@ -52,25 +52,49 @@ func compile(raw[]string) { print(" pop rax") print(" add rax, rsi") print(" push rax") + case "-": print(" ;; MINUS") print(" pop rsi") print(" pop rax") print(" sub rax, rsi") print(" push rax") - case ".": - print(" ;; DUMP") - print(" pop rdi") - print(" call .dump") + + case ">": + print(" ;; GREATER") + print(" mov r10, 0") + print(" mov r11, 1") + print(" pop rsi") + print(" pop rax") + print(" cmp rax, rsi") + print(" cmovg r10, r11") + print(" push r10") + + case "<": + print(" ;; LESS") + print(" mov r10, 0") + print(" mov r11, 1") + print(" pop rsi") + print(" pop rax") + print(" cmp rax, rsi") + print(" cmovl r10, r11") + print(" push r10") + case "=": print(" ;; EQUAL") print(" mov r10, 0") print(" mov r11, 1") print(" pop rsi") print(" pop rax") - print(" cmp rsi, rax") + print(" cmp rax, rsi") print(" cmove r10, r11") print(" push r10") + + case ".": + print(" ;; DUMP") + print(" pop rdi") + print(" call .dump") + case "if": print(" ;; IF") print(" pop r10") |