echo server, multiple clients, lines <256 bytes
This commit is contained in:
parent
d54596514c
commit
29f54ba779
6 changed files with 304 additions and 112 deletions
69
clients.s
Normal file
69
clients.s
Normal 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
|
Loading…
Add table
Add a link
Reference in a new issue