-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathquick_sum.asm
More file actions
28 lines (22 loc) · 849 Bytes
/
quick_sum.asm
File metadata and controls
28 lines (22 loc) · 849 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
SECTION .bss
; Inicializar vetorC na memória
vetorC RESD 1
SECTION .text
GLOBAL _quickSum
_quickSum:
; Salvar Pilha de Execução
push EBP
mov EBP, ESP
mov EDI, [EBP + 8] ; Salvar vetorA em EDI
mov ESI, [EBP + 12] ; Salvar vetorB em ESI
mov ECX, [EBP + 16] ; Salvar qtd_iter em ECX
.loopSum:
movq MM0, QWORD[EDI + ECX * 8 - 8] ; Carrega duas posições de vetorA em MM0
paddb MM0, QWORD[ESI + ECX * 8 - 8] ; Adiciona duas posições de vetorB com duas de vetorA e carrega em MM0
movq QWORD[vetorC + ECX * 8 - 8], MM0 ; Salva as posições adicionadas nas posições correspondentes de vetorC
loop .loopSum ; while (ECX--);
mov EAX, vetorC ; Retorna o endereço de vetorC
; Restaurar Pilha de Execução
mov ESP, EBP
pop EBP
ret 12