MIPS 컴퓨터 동작방식

sujeong kim·2021년 12월 27일
0

CS-컴퓨터구조

목록 보기
4/4

프로시저

  • 고급언어의 함수 같은 기능.
  • 제공되는 인수에 따라서 특정 작업을 수행하는 서브루틴

실행단계

  1. 프로시저가 접근할 수 있는 곳에 인수를 가지고 있는 레지스터(a0 a0~a3)의 값을 넣는다.
  2. 프로시저에로 제어권을 넘긴다. 수행중인 명령어의 주소는 PC(program counter)레지스터에 그 때 그 때 저장됨.
  3. 계산 결과를 반환값을 저장하는 레지스터에 넣음(v0 v0~v1)
  4. 복귀 주소를 저장하는 레지스터($ra)에 복귀 주소를 저장(jal: jump-and-link instruction)하고 할당된 주소로 복귀(jr: jump register): 호출한 프로그램으로 제어권을 반환
    ex) jal procedure address, jr $ra

스택

  • 레지스터가 부족한 경우에 사용
  • 선입후출로 이루어진 자료구조
  • 스택포인터(sp)의 값은 가장 최근에 들어온 데이터의 위치를 가지고 있음
  • 정적변수 선언을 했을 때 값이 저장되는 공간
  • 레지스터보다 훨씬 큰 공간이므로 배열 등을 저장할 수 있음.

스택 프레임

  • 각 프로시저는 독립된 스택프레임을 가지고 있음
  • 프로시저에 저장된 레지스터와 지역변수를 가지고 있는 스택영역
  • 프레임포인터(fp)가 프로시저의 첫 번째 워드를 가리킴
  • 스택포인터(sp)는 스택의 최하단을 가리킴
  • 프로시저의 복귀 주소를 저장하는 곳

주소지정방식

1. 수치 주소지정: 피연산자는 명령어 내에 있는 상수

  • 명령어의 주소 필드에 데이터가 들어 있으며 상수의 정의나 변수 값의 초기화에 편리
  • 데이터를 얻기 위한 기억장치 접근이 필요 없음
  • 사용할 수 있는 수의 크기가 주소 필드의 크기로 제한됨

2. 레지스터 주소지정: 피연산자는 레지스터

  • cpu내의 레지스터에 데이터가 저장되어 있는 방식
  • 주소 필드가 레지스터 번호를 나타내므로 적은 비트수가 필요함
  • 데이터 저장공간이 cpu 내부 레지스터로 제한

3. 베이스 레지스터 주소지정: 메모리 주소는 베이스 레지스터의 값과 주소 필드의 변위 값을 더함

  • 베이스 레지스터의 값과 주소 필드의 변위 값을 더해서 주소를 구함
  • 피연산자가 메모리에 존재
  • 메모리 자원을 사용하므로 저장형식이 유연

4. pc 상대 주소지정: pc값과 명령어 내 상수의 합을 더해서 주소를 구함

  • pc(program counter)값에 명령어의 주소 필드 값을 더해서 유효주소를 구함
  • 적은 비트를 사용하는 것으로 32비트 분기 주소를 만드는 것이 가능
  • 조건부 분기명령에 사용

5. 의사직접 주소지정: 명령어 내의 26비트를 pc의 상위 비트들과 연접하여 점프 주소를 구함

  • 명령어 내의 26비트를 pc의 상위 비트들과 연접하여 점프 주소를 구함
  • 무조건 분기문에서 주로 사용
profile
개발자

0개의 댓글