This repository has been archived on 2025-10-24. You can view files and clone it, but cannot push or open issues or pull requests.
Files
nub-lang-archive-2/output/out.asm
2025-01-29 21:39:55 +01:00

202 lines
2.8 KiB
NASM

global _start
extern strlen
section .bss
label1: resq 1
label2: resq 1
label3: resq 1
section .text
_start:
mov rax, 1
mov [label1], rax
mov rax, 1
mov [label2], rax
mov rax, 2
mov [label3], rax
call label4
mov rdi, 0
mov rax, 60
syscall
label4:
push rbp
mov rbp, rsp
sub rsp, 0
mov rax, label16
push rax
pop rdi
call label12
mov rax, 1
push rax
pop rdi
call label14
mov rax, label19
push rax
pop rdi
call strlen
push rax
mov rax, 1
mov rbx, rax
pop rax
cmp rax, rax
sete al
movzx rax, al
cmp rax, 0
je label18
mov rax, label20
push rax
pop rdi
call label12
jmp label17
label18:
mov rax, 0
cmp rax, 0
je label21
mov rax, label22
push rax
pop rdi
call label12
jmp label17
label21:
mov rax, 1
cmp rax, 0
je label23
mov rax, label24
push rax
pop rdi
call label12
jmp label17
label23:
mov rax, label25
push rax
pop rdi
call label12
label17:
label5:
mov rsp, rbp
pop rbp
ret
label6:
push rbp
mov rbp, rsp
sub rsp, 8
mov [rbp - 8], rdi
mov rax, [label1]
push rax
mov rax, [label2]
push rax
mov rax, [rbp - 8]
push rax
mov rax, [rbp - 8]
push rax
pop rdi
call strlen
push rax
pop rdx
pop rsi
pop rdi
pop rax
syscall
label7:
mov rsp, rbp
pop rbp
ret
label8:
push rbp
mov rbp, rsp
sub rsp, 8
mov [rbp - 8], rdi
mov rax, [rbp - 8]
cmp rax, 0
je label27
mov rax, label28
push rax
pop rdi
call label6
jmp label26
label27:
mov rax, label29
push rax
pop rdi
call label6
label26:
label9:
mov rsp, rbp
pop rbp
ret
label10:
push rbp
mov rbp, rsp
sub rsp, 0
mov rax, label30
push rax
pop rdi
call label6
label11:
mov rsp, rbp
pop rbp
ret
label12:
push rbp
mov rbp, rsp
sub rsp, 8
mov [rbp - 8], rdi
mov rax, [rbp - 8]
push rax
pop rdi
call label6
call label10
label13:
mov rsp, rbp
pop rbp
ret
label14:
push rbp
mov rbp, rsp
sub rsp, 8
mov [rbp - 8], rdi
mov rax, [rbp - 8]
push rax
pop rdi
call label8
call label10
label15:
mov rsp, rbp
pop rbp
ret
strcmp:
xor rdx, rdx
.loop:
mov al, [rsi + rdx]
mov bl, [rdi + rdx]
inc rdx
cmp al, bl
jne .not_equal
cmp al, 0
je .equal
jmp .loop
.not_equal:
mov rax, 0
ret
.equal:
mov rax, 1
ret
section .data
label16: db `test`, 0
label19: db `1`, 0
label20: db `1`, 0
label22: db `2`, 0
label24: db `3`, 0
label25: db `4`, 0
label28: db `true`, 0
label29: db `false`, 0
label30: db `\n`, 0