Move io
This commit is contained in:
@@ -1,7 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="UserContentModel">
|
||||
<attachedFolders />
|
||||
<attachedFolders>
|
||||
<Path>../input</Path>
|
||||
<Path>../output</Path>
|
||||
</attachedFolders>
|
||||
<explicitIncludes />
|
||||
<explicitExcludes />
|
||||
</component>
|
||||
|
||||
BIN
output/out
Executable file
BIN
output/out
Executable file
Binary file not shown.
201
output/out.asm
Normal file
201
output/out.asm
Normal file
@@ -0,0 +1,201 @@
|
||||
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
|
||||
BIN
output/out.o
Normal file
BIN
output/out.o
Normal file
Binary file not shown.
BIN
output/strlen.o
Normal file
BIN
output/strlen.o
Normal file
Binary file not shown.
Reference in New Issue
Block a user