<aside> 💡 목차


</aside>

MIPS 레지스터 구조 요약

0 0 상수 고정
1 0~31
~ 범용 레지스터 GP 영역 32bit
31 각 비트당 32bit
PC 다음에 실행할 명령어 저장 32bit
LO 곱셈 나눗셈 하위 32비트 32bit
HI 곱셈 나눗셈 상위 32비트 32bit

범용 레지스터 영역을 확장하면 다음과 같습니다

0 $ zero 상수 0 고정
1 $ at 어셈블러가 명령어 번역하거나 데이터 처리할때 씀
2 $ v0 caller saves 상위 32비트 리턴값
3 $ v1 하위 32비트 리턴값
4 $ a0 caller saves caller saves
5 $ a1 인수 (arguments)
6 $ a2 print(a) ← a 가 인수
7 $ a3
8 $ t0 caller saves 임시값 1 (temporary)
~ 함수 내에서 함수가 실행되었을때, 원래 지점으로 돌아가기 위함 (체크포인트 아닌듯)
15 $ t7 2 + 3 할때 5를 표현할때 5를 저장할 필요는 없으니 그냥 출력하는개념
16 $ s0 callee saves 전역변수, 상수 (permanent)
~
23 $ s7
24 $ t8 caller saves 임시값 2 (temporary)
25 $ t9
26 $ k0 reserved 운영체제 (OS kernel)
27 $ k1
28 $ gp caller saves (Global Pointer) malloc 이나 array같이 배열의 시작 위치를 담는 포인터
29 $ sp preserved (Stack Pointer) 스택의 현재 위치를 담는 포인터
30 $ fp callee saves (Frame Pointer) 멀티태스킹할때 각 task들이 저장될 프레임들
31 $ ra caller saves (Return Address)
특정 함수가 종료되고 함수가 실행되기 직전 실행 위치로 돌아가기 위해 사용되는
이전 작업 주소 포인터

Untitled