This commit is contained in:
janis 2025-10-20 17:55:32 +02:00
parent 8bc56220fc
commit e9f634bca5
Signed by: janis
SSH key fingerprint: SHA256:bB1qbbqmDXZNT0KKD5c2Dfjg53JGhj7B3CFcLIzSqq8

View file

@ -15,7 +15,7 @@ global vec_pop
global vec_swap
global vec_remove
global vec_get
global vec_free
global vec_drop
;; Byte vector structure
@ -56,6 +56,25 @@ vec_init:
mov qword [r15 + 32], rdx ; drop
ret
;; rdi: pointer to Vec struct
;; rsi: index
;; fn vec_get(vec: *mut Vec, index: usize) -> *mut u8
vec_get:
; if (index >= vec.len) panic();
mov rax, [rdi + 8] ; len
cmp rsi, rax
jge .panic
; return &mut vec.data[index * vec.item_size];
mov rax, [rdi + 24] ; item_size
imul rax, rsi ; index * item_size
mov rsi, [rdi] ; data
add rax, rsi ; data + index * item_size
ret
.panic:
call panic
ret
;; rdi: pointer to Vec struct
;; rsi: pointer to data to push
;; rdx: size of data to push