Skip to content

Commit

Permalink
Add unfinished raw unpacker
Browse files Browse the repository at this point in the history
  • Loading branch information
ChillerDragon committed Aug 23, 2024
1 parent 94de9e4 commit 3728ca0
Show file tree
Hide file tree
Showing 2 changed files with 64 additions and 0 deletions.
29 changes: 29 additions & 0 deletions src/unpacker.asm
Original file line number Diff line number Diff line change
Expand Up @@ -191,5 +191,34 @@ get_raw:
; get_raw [rax]
; rax = size
; returns into rax a pointer to the raw data
push_registers_keep_rax

; final return value
mov r8, [unpacker_data_ptr]

; r10 is end
mov r10, r9
add r10, rax

._get_raw_byte_loop:
cmp r9, r10
jge ._get_raw_end

mov r9, [unpacker_data_ptr]
inc r9
mov [unpacker_data_ptr], r9
jmp ._get_raw_byte_loop

._get_raw_end:


mov r9, [unpacker_data_ptr]
inc r9
mov [unpacker_data_ptr], r9

; return value
mov rax, r8

pop_registers_keep_rax
ret

35 changes: 35 additions & 0 deletions tests/unpacker_basic_ints_test.asm
Original file line number Diff line number Diff line change
Expand Up @@ -101,5 +101,40 @@ _test_multiple_ints_plus_strings:
call get_int
assert_eax_eq 9, __LINE__

_test_unpack_raw:
mov byte [generic_buffer_128 + 0], 0x02
mov byte [generic_buffer_128 + 1], 'C'
mov byte [generic_buffer_128 + 2], 'C'
mov byte [generic_buffer_128 + 3], 0x00
mov byte [generic_buffer_128 + 4], 0x05
mov byte [generic_buffer_128 + 5], 'f'
mov byte [generic_buffer_128 + 6], 'o'
mov byte [generic_buffer_128 + 7], 'o'
mov byte [generic_buffer_128 + 8], 0x00
mov byte [generic_buffer_128 + 9], 0x09
unpacker_reset generic_buffer_128, 10

call get_int
assert_eax_eq 2, __LINE__

mov rax, 3
call get_raw
mov rdi, rax
str_to_stack "CC"
assert_str_eq rax, rdi
mov rsp, rbp

; call get_int
; assert_eax_eq 5, __LINE__

; call get_string
; mov rdi, rax
; str_to_stack "foo"
; assert_str_eq rax, rdi
; mov rsp, rbp

; call get_int
; assert_eax_eq 9, __LINE__

exit 0

0 comments on commit 3728ca0

Please sign in to comment.