🤌명령어 집합
복기
- 레지스터는 CPU 내부에 있다.
- 메인메모리에서 명령어를 프로세서로 가져온다.
컴퓨터 명령어의 레퍼토리
- 다른 컴퓨터들은 다른 명령어를 갖을 수 있음
- 많은 부분 유사성이 높음
- 초기의 컴퓨터들은 매우 간결한 명령어 집합을
갖음
- 1940년대부터 하드웨어의 간결성은 중요한 기준
- 현대의 컴퓨터들 역시 단순한 명령어 집합을 갖음
💻MIPS
- 교과서 및 강의에서 배우는 명령어 집합
- 1980년대 이후 설계된 명령어 집합 중 대표적
- MIPS 이외에 대표적으로는 ARMv7, ARMv8,
Intel x86 등이 있음
- 많은 최근 ISA는 서로 크게 다르지 않음
- 비슷한 ISA들이 임베디드 시장에서 큰 비중을
차지하고 있음
산술 연산
덧셈 뺄셈, 세개의 피연산자
Ex) `add a, b, c # a gets b + c`
한줄엔 하나의 산술 연산만 해야 함.
C code:
f = (g + h) - (i + j);
Compiled MIPS code:
add t0, g, h # temp t0 = g + h
add t1, i, j # temp t1 = i + j
sub f, t0, t1 # f = t0 - t1
산술 명령어는 레지스터에 저장되있는 피연산자를 사용한다.
- 메인 메모리 g,h를 프로세서의 레지스터로 불러와서 계산을 실행 한다.
- g,h를 바로 불러올 수는 없음.
MIPS 는 32 개의 32-bit 레지스터를 갖는다.
- 자주 사용되는 데이터를 위해 사용됨
- 0번 부터 31번
- 32-bit 데이터는 워드라고 불림
레지스터의 어셈블러 이름
- $t0, $t1, ..., $t9 for temporary values
- $s0, $s1, ..., $s7 for saved variables
C code:
f = (g + h) - (i + j);
f, ..., j in $s0, ..., $s4
Compiled MIPS code:
add $t0, $s1, $s2
add $t1, $s3, $s4
sub $s0, $t0, $t1
위와 같다!
t0 레지스터에 s1레지스터와 s2레지스터 더한 값을 저장해라.
t1 레지스터에 s3레지스터와 s4레지스터 더한 값을 저장해라.
s0 레지스터에 t0레지스와 t1레지스터 뺸 값을 저장해라.
다음은 좀더 자세하게 MIPS를 다뤄보겠다.