From 6c1e8fe788b3d71e41b9995fc770158c9c2fa67d Mon Sep 17 00:00:00 2001
From: iliya <iliya.saroukha@hes-so.ch>
Date: Tue, 17 Oct 2023 18:19:42 +0200
Subject: [PATCH] started working on last exercise

---
 2-3_asm/src/assembleur.s | 54 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 54 insertions(+)

diff --git a/2-3_asm/src/assembleur.s b/2-3_asm/src/assembleur.s
index 9339342..9faf541 100644
--- a/2-3_asm/src/assembleur.s
+++ b/2-3_asm/src/assembleur.s
@@ -10,6 +10,7 @@
 .global funcexo1
 .global funcexo2
 .global funcexo3
+.global funcexo4
 
 
 /*****************************************************
@@ -94,5 +95,58 @@ funcexo3:
 
 	bx    lr
 
+
+
+
+/*****************************************************
+ * function     : exercice 4
+ * R0: n
+ * return value : value of fibonacci sequence for n
+ *****************************************************/
+.thumb_func
+funcexo4:
+	mov r1, r0
+	push {r0, r1, lr}
+	bl lhs_fact
+
+lhs_fact:
+	pop {r0, r1, lr}
+	sub r0, #1
+	cmp r0, #1
+	bgt lhs_fact
+	bl rhs_fact
+
+rhs_fact:
+
+
+exit_ret:
+	pop {r0, r1, lr}
+	mov r0, #1
+
+	bx	lr
+
+
+
+fact:
+	push {r0, r1, lr}
+	sub r0, #1
+	cmp r0, #1
+	bgt rcall
+	sub r1, #2
+	cmp r1, #1
+	bgt rcall
+	add sp, #12
+
+	bx	lr
+
+
+rcall:
+	bl fact
+	pop {r0, r1, lr}
+	add r0, r1
+
+	bx	lr
+
+
 //.weak add_sat
 .ltorg
-- 
GitLab