명령어란? (feat.MIPS)

한포도·2024년 3월 15일
0

Compter Architecture

목록 보기
3/8

🤌명령어 집합

복기

  • 레지스터는 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를 다뤄보겠다.

profile
응애 개발맨

0개의 댓글