[STUDY] 어셈블리어 - 4
2023. 2. 25. 23:57ㆍ코딩/공부 [STUDY]
반응형
1. 과제
목표 > 어셈블리어로 재귀함수를 이용한 팩토리얼 코드 구현하기
2. 조건
1. 스택을 활용할 것.
2. system V x86_64 abi를 사용 할 것.
3. 아래의 C언어 코드를 참고할 것.
int fact(int n){
if(1<=n){
return 1;
}
return n * fact(n-1)
}
3. 결과
section .text
global fact
global _start
_start:
mov rdi, 10
call fact
mov rax, 60
xor rdi, rdi
syscall
fact:
push rbp
mov rbp, rsp
sub rsp, 0x10
mov QWORD [rbp-0x8], rdi
cmp QWORD [rbp-0x8], 0x1
jg .if
mov eax, 0x1
jmp .end
.if:
mov rax, QWORD [rbp-0x8]
sub rax, 0x1
mov rdi, rax
call fact
imul rax, QWORD [rbp-0x8]
.end:
leave
ret
재귀함수 자체를 이용한 팩토리얼 함수 자체가 어셈으로 구현하는게 처음이라 이해하고 만드는데 상당히 오래 걸렸다..
반응형
'코딩 > 공부 [STUDY]' 카테고리의 다른 글
[STUDY] 어셈블리어 - 6 (0) | 2023.02.28 |
---|---|
[STUDY] 어셈블리어 - 5 (0) | 2023.02.28 |
[STUDY] 어셈블리어 - 3 (rip,rsp,rbp,스택프레임) (1) | 2023.02.23 |
[STUDY] 어셈블리어 - 2 (1) | 2023.02.23 |
[STUDY] 어셈블리어 - 1 (0) | 2023.02.22 |