From 3d6f41f7367e5ef31048667f35cd3e087b616ab1 Mon Sep 17 00:00:00 2001 From: SowinskiBraeden Date: Fri, 14 Nov 2025 18:12:51 -0800 Subject: [PATCH] simplify factorial --- factorial | Bin 13536 -> 13536 bytes factorial.s | 22 ++++++++++------------ 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/factorial b/factorial index 384a46d31fd1f917bf071b7156894ebda93519ba..a6aa3da9b933ce06852fa637814c1f4ea040301f 100755 GIT binary patch delta 200 zcmaEm`5<$G1Y_<*$@iR786aTlWkqwV_c(rl5oo|8#SZZwW(1OUq>kGtFaizn=zJ49SymvJmlec;h`p%T zTq`hJZnJ{E0i&Um0Msrhr3j|k7!=XO)u7^PlN$}(8A~UhG|1ykN-R!|PX-bUDfxMu QT?}oQ80T(oG>&Hk0P;pXxBvhE diff --git a/factorial.s b/factorial.s index 0979c06..8ec9ce4 100644 --- a/factorial.s +++ b/factorial.s @@ -2,31 +2,29 @@ .global _start # factorial -# - rdi as input number -# - rax as result +# - rdi (n) as input number +# - rax (r) as result factorial: - push rbp - mov rbp, rsp - - cmp rdi, 1 - jle base_case # if n <= 1 return 1 + cmp rdi, 1 # compare n to 1 + jle done # if n <= 1 return (r = 1) push rdi # save n - dec rdi # rdi = n-1 - call factorial # rax = factorial(n-1) + dec rdi # rdi = n - 1 + call factorial # rax = factorial(n - 1) pop rdx # rdx = original n - imul rax, rdx # rax = factorial(n-1) * n + imul rax, rdx # rax = factorial(n - 1) * n jmp done base_case: mov rax, 1 done: - mov rsp, rbp - pop rbp ret +# prints number as decimal +# from rax register +# just to demo, don't explain print_rax_digit: sub rsp, 16