diff --git a/lang/src/vec.asm b/lang/src/vec.asm index 2cc89ba..073aeec 100644 --- a/lang/src/vec.asm +++ b/lang/src/vec.asm @@ -105,8 +105,12 @@ vec_push: call vec_try_grow ; memcpy(&vec.data[vec.len], data, size); mov rax, [rsp] ; vec - mov rdi, [rax] ; vec.data - add rdi, [rax + 8] ; vec.data + vec.len + mov rcx, [rax] ; vec.data + mov rdi, [rax + 8] ; vec.len + mov rax, [rax + 24] ; vec.item_size + mul rdi ; len * item_size + add rax, rcx ; data + len * item_size + mov rdi, rax ; dest ptr mov rsi, [rsp + 8] ; data ptr mov rdx, [rsp + 16] ; data size call memcpy @@ -142,7 +146,7 @@ vec_pop: mul qword [rdi + 24] ; len * item_size mov rsi, [rdi] ; data add rax, rsi ; data + len * item_size - mov rdi, rsi + mov rdi, rax call r8 .ret: pop rbp