echo server, multiple clients, lines <256 bytes

This commit is contained in:
root 2025-05-13 12:07:03 +00:00
parent d54596514c
commit 29f54ba779
6 changed files with 304 additions and 112 deletions

69
clients.s Normal file
View file

@ -0,0 +1,69 @@
; edi - fd
clients__append:
; TODO check against client_capacity
mov r10, [clients_len]
imul r10, client_size
add r10, clients
mov [r10], edi
add qword [clients_len], 1
mov r11, 4
clients__append__write_zeros:
cmp r11, 8
jge return
mov byte [r10 + r11], 0
add r11, 1
jmp clients__append__write_zeros
; edi - fd
clients__search:
mov r11, [clients_len]
imul r11, client_size
add r11, clients
mov r10, clients
clients__search__loop:
cmp r10, r11
jge clients__search__fail
mov r8d, [r10]
cmp r8d, edi
je clients__search__succ
add r10, client_size
jmp clients__search__loop
clients__search__fail:
mov r10, -1
clients__search__succ:
mov rax, r10
ret
; rdi - address of client within clients array
clients__remove:
mov r10, [clients_len]
cmp r10, 1
jle clients__clear
add r10, -1
mov [clients_len], r10
mov r10, 0
mov r11, r10
imul r11, client_size
add r11, clients
clients__remove__loop:
cmp r10, client_size
jge return
mov r8b, [r11 + r10]
mov [rdi + r10], r8b
add r10, 1
jmp clients__remove__loop
; rdi - address of client within clients array
clients__clear:
mov r10, 0
mov [clients_len], r10
ret