kolibrios-gitea/programs/develop/libraries/libcrash/trunk/crashtest.asm

154 lines
3.6 KiB
NASM
Raw Normal View History

use32
org 0x0
db 'MENUET01'
dd 0x01,start,i_end,e_end,e_end,0,this_file_name
include '../../../../proc32.inc'
include '../../../../macros.inc'
include '../../../../dll.inc'
;include '../../../../debug.inc'
include 'libcrash.inc'
BUFFER_SIZE = 4096
start:
pushfd
pop eax
or eax, 1 SHL 18 ; Alignment Check flag
push eax
popfd
mcall 68, 11
stdcall dll.Load, @IMPORT
or eax, eax
jnz quit
still:
mcall 10
dec eax
jz redraw
dec eax
jz key
button:
mcall 17
shr eax, 8
cmp eax, 1
je quit
redraw:
mcall 12, 1
mcall 0, <0,900>, <0,160>, 0x34000000, 0x80000000, window_title
mcall 4, < 0, 0>, 0xc0ffffff, message, , 0
mov [hid], 0
mov [text_pos_y], 10
mov [hash_name], hash_strings
.next_hash:
mov dword[f70_buf + 4], 0
mov dword[msglen], 0
mov edi, hex
xor eax, eax
mov ecx, 1024/4
rep stosd
invoke crash.hash, [hid], data_buffer, update_data_buffer, ctx
invoke crash.bin2hex, ctx, hex, [hid]
mov ebx, [text_pos_y]
mcall 4, , 0xc0ffffff, [hash_name], , 0
mov ebx, [text_pos_y]
add ebx, 66 SHL 16
mcall 4, , 0x40ffffff, hex, 128, 0
add [text_pos_y], 10
add [hash_name], 12 ; lenght of hash_strings item
inc [hid]
cmp [hid], LIBCRASH_SHA3_512
jng .next_hash
mcall 12, 2
jmp still
key:
mcall 2
jmp still
quit:
mcall -1
proc update_data_buffer _left
mov eax, data_buffer
add eax, [_left]
mov dword[f70_buf + 16], eax
mov eax, BUFFER_SIZE
sub eax, [_left]
mov dword[f70_buf + 12], eax
mcall 70, f70_buf
mov eax, ebx
cmp eax, -1
jne @f
inc eax
@@:
add dword[f70_buf + 4], eax
ret
endp
szZ window_title , 'libcrash example'
szZ message , 'hash sums of this file'
hash_strings:
db 'crc32 : ',0
db 'md4 : ',0
db 'md5 : ',0
db 'sha1 : ',0
db 'sha224 : ',0
db 'sha256 : ',0
db 'sha384 : ',0
db 'sha512 : ',0
db 'sha3-224 : ',0
db 'sha3-256 : ',0
db 'sha3-384 : ',0
db 'sha3-512 : ',0
f70_buf:
funcnum dd 0
src dd 0
res1 dd 0
count dd BUFFER_SIZE
dst dd data_buffer
res2 db 0
fname dd this_file_name
align 4
@IMPORT:
library \
libcrash, 'libcrash.obj'
import libcrash , \
libcrash.init , 'lib_init' , \
crash.hash , 'crash_hash' , \
crash.bin2hex , 'crash_bin2hex'
i_end:
hash_name rd 1
text_pos_y rd 1
hash rd 50
hid rd 1 ; hash id
msglen rd 1
hex rb 1024
data_buffer rb BUFFER_SIZE
this_file_name rb 4096
rb 0x800 ;stack
align 16 ; should be enough
ctx rb 0x1000
e_end: