summaryrefslogtreecommitdiff
path: root/I_anno/Architettura_Elaboratori/vector_prod.asm
diff options
context:
space:
mode:
authorSanto Cariotti <dcariotti24@gmail.com>2020-10-18 18:56:43 +0200
committerSanto Cariotti <dcariotti24@gmail.com>2020-10-20 09:08:52 +0200
commitf279107065146a4940f5e73602a1c3c09e58b31d (patch)
treefd892749637a8b6c5c31ccb80bba04ade76ab87a /I_anno/Architettura_Elaboratori/vector_prod.asm
parent4e063e32250312c38d5646840719b62429362b21 (diff)
chore: name of first year folder
Diffstat (limited to 'I_anno/Architettura_Elaboratori/vector_prod.asm')
-rw-r--r--I_anno/Architettura_Elaboratori/vector_prod.asm103
1 files changed, 0 insertions, 103 deletions
diff --git a/I_anno/Architettura_Elaboratori/vector_prod.asm b/I_anno/Architettura_Elaboratori/vector_prod.asm
deleted file mode 100644
index cf5e4ef..0000000
--- a/I_anno/Architettura_Elaboratori/vector_prod.asm
+++ /dev/null
@@ -1,103 +0,0 @@
-array1 dcd 1, 3, 4, 1
-array2 dcd 1, 0, 2, 0
-arrayn dcd 4
-
- mov r0, #arrayn
- ldr r0, [r0] ; r0 = lunghezza array
-
- mov r1, #array1 ; r1 = puntatore al primo array
- mov r2, #array2 ; r2 = puntatore al secondo array
-
-loop
- cmp r0, #0
- beq loop_end
-
- ldr r3, [r1] ; r3 = valore a cui punta r1
- ldr r4, [r2] ; r4 = valore a cui punta r2
-
- cmp r3, #0 ; se r3 è 0, la moltiplicazione sarà 0
- beq r3_store
- blt after_neg3 ; se r3 è negativo, cambia il filtro a 1
-jp_before4
- cmp r4, #0 ; se r4 è 0, la moltiplicazione sarà 0
- beq r4_store
- blt after_neg4 ; se r4 è negativo, controlla se il filtro è già 1, in caso lo cambia
-jp_after4
- cmp r3, r4 ; confronta r3 e r4 per fare la moltiplicazione con ciclo minore
- bgt mul_r3
- ble mul_r4
-
-loop_back
- add r1, r1, #4 ; incrementa i puntatori e decrementa contatore
- add r2, r2, #4
- sub r0, r0, #1
- mov r6, #0
-
- b loop
-
-after_neg3
- mvn r3, r3
- add r3, r3, #1
- mov r6, #1
- b jp_before4
-
-restart_r6
- mov r6, #0
- b jp_afte4
-
-after_neg4
- mvn r4, r4
- add r4, r4, #1
- cmp r6, #1
- beq restart_r6 ; re inserisce il valore 0 perché fa prodotto di due negativi
-
- mov r6, #1
- b jp_after4
-
-neg3
- mvn r3, r3
- add r3, r3, #1
- add r5, r5, r3
- b loop_back
-
-r3_store
- cmp r6, #1
- beq neg3
- str r3, [r1]
- add r5, r5, r3
- b loop_back
-
-neg4
- mvn r4, r4
- add r4, r4, #1
- str r4, [r1]
- add r5, r5, r4
- b loop_back
-
-r4_store
- cmp r6, #1
- beq neg4
- str r4, [r1]
- add r5, r5, r4
- b loop_back
-
-mul_r3
- cmp r4, #1
- ble r3_store
-
- add r3, r3, r3
-
- sub r4, r4, #1
- b mul_r3
-
-mul_r4
- cmp r3, #1
- ble r4_store
-
- add r4, r4, r4
-
- sub r3, r3, #1
- b mul_r4
-
-loop_end
- end