0. 레지스터
레지스터는 다양한 용도로 사용한다.
기존의 a, b, c, d의 범용 레지스터도 있으며
특정 위치를 가리키는 포인터 레지스터도 있다.
IP(Instruction Pointer) : 다음 수행 명령어의 위치
SP(Stack Pointer) : 현재 스택의 Top 위치
BP(Base Pointer) : 스택의 상대주소를 계산할 때 사용
1. 스택 메모리
2. 스택 프레임
높은 주소에서 낮은 주소로 쌓음
rbp 레지스터를 스택에 저장하여 해당 위치를 기준으로 원하는 값을 뽑아낼 수 있다.
main: push 1 push 2 call MAX PRINT_DEC 8, rax NEWLINE add rsp, 16 ; 크래쉬를 방지하기 위해 Stack Pointer를 16비트 만큼 이동 xor rax, rax ret MAX: push rbp mov rbp, rsp mov rax, [rbp+16] mov rbx, [rbp+24] mov rax, rbx jg L1 mov rax, rbx L1: pop rbp ret |
'어셈블리' 카테고리의 다른 글
0-11. 함수(Function, 프로시저) (0) | 2023.04.28 |
---|---|
0-10. 배열과 주소(Array, Address) (0) | 2023.04.28 |
0-9. 반복문(Loop) (0) | 2023.04.28 |
0-8. 분기문(If) (0) | 2023.04.28 |
0-7. 시프트 연산과 논리 연산 (0) | 2023.04.28 |