added basic shit

This commit is contained in:
2026-05-05 16:18:10 +03:00
parent 2eae1ab83b
commit f0cab2dca6
8 changed files with 121 additions and 0 deletions
+1
View File
@@ -0,0 +1 @@
bin/*
Executable
+16
View File
@@ -0,0 +1,16 @@
set -ex
echo "compiling true"
nasm -f elf64 -o tmp/true.o src/true/true.asm
ld -s --nmagic -o bin/true tmp/true.o
ls -l bin/true
echo "compiling false"
nasm -f elf64 -o tmp/false.o src/false/false.asm
ld -s --nmagic -o bin/false tmp/false.o
ls -l bin/false
echo "compiling cat"
nasm -f elf64 -o tmp/cat.o src/cat/cat.asm
ld -s -o bin/cat tmp/cat.o
ls -l bin/cat
+90
View File
@@ -0,0 +1,90 @@
%define STDOUT 1
%define STDERR 2
%define SYS_READ 0
%define SYS_WRITE 1
%define SYS_OPEN 2
%define SYS_CLOSE 3
%define SYS_EXIT 60
%define O_RDONLY 0
section .bss
buf resb 4096
section .data
file_err_m db "file error", 10, 0
args_err_m db "args error", 10, 0
section .text
global _start
_start:
; так ну для начала надо бы понять сколько у нас аргументов
mov rbx, [rsp]
cmp rbx, 1
je .prep_narg
cmp rbx, 2
jne args_err
jmp .prep
.prep_narg:
xor r12, r12
jmp .loop
.prep:
mov rax, SYS_OPEN
mov rdi, [rsp + 16]; argv[1]
mov rsi, O_RDONLY
xor rdx, rdx
syscall
js file_err
mov r12, rax
.loop:
mov rax, SYS_READ
mov rdi, r12
mov rsi, buf
mov rdx, 4096
syscall
test rax, rax
jz .done
mov rdx, rax
mov rax, SYS_WRITE
mov rdi, STDOUT
mov rsi, buf
syscall
jmp .loop
.done:
mov rax, SYS_CLOSE
mov rdi, r12
syscall
jmp exit
file_err:
mov rax, SYS_WRITE
mov rdi, STDERR
mov rsi, file_err_m
mov rdx, 12
syscall
jmp exit_err
args_err:
mov rax, SYS_WRITE
mov rdi, STDERR
mov rsi, args_err_m
mov edx, 12
syscall
jmp exit_err
exit_err:
mov rax, SYS_EXIT
mov rdi, 1
syscall
exit:
mov rax, SYS_EXIT
mov rdi, 0
syscall
+7
View File
@@ -0,0 +1,7 @@
section .text
global _start
_start:
mov rax, 60
mov rdi, 1
syscall
+7
View File
@@ -0,0 +1,7 @@
section .text
global _start
_start:
mov rax, 60
xor rdi, rsi
syscall
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.