simplify factorial
This commit is contained in:
2 files changed
+7
-9
No files matched your search
+7
-9
@@ -2,14 +2,11 @@
|
|||||||
.global _start
|
.global _start
|
||||||
|
|
||||||
# factorial
|
# factorial
|
||||||
# - rdi as input number
|
# - rdi (n) as input number
|
||||||
# - rax as result
|
# - rax (r) as result
|
||||||
factorial:
|
factorial:
|
||||||
push rbp
|
cmp rdi, 1 # compare n to 1
|
||||||
mov rbp, rsp
|
jle done # if n <= 1 return (r = 1)
|
||||||
|
|
||||||
cmp rdi, 1
|
|
||||||
jle base_case # if n <= 1 return 1
|
|
||||||
|
|
||||||
push rdi # save n
|
push rdi # save n
|
||||||
dec rdi # rdi = n - 1
|
dec rdi # rdi = n - 1
|
||||||
@@ -23,10 +20,11 @@ base_case:
|
|||||||
mov rax, 1
|
mov rax, 1
|
||||||
|
|
||||||
done:
|
done:
|
||||||
mov rsp, rbp
|
|
||||||
pop rbp
|
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
# prints number as decimal
|
||||||
|
# from rax register
|
||||||
|
# just to demo, don't explain
|
||||||
print_rax_digit:
|
print_rax_digit:
|
||||||
sub rsp, 16
|
sub rsp, 16
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user