엔지니어가 되고 싶은 공돌이

06. Procedure and Jumping 본문

Computer Science/Computer Architecture

06. Procedure and Jumping

Geca 2025. 4. 24. 15:50

 

6. 1. Procedure

 

- Procedure: 제공되는 Parameter(인수)에 따라서 특정 작업을 수행하는 서브루틴.

 

- Procedure의 실행 과정: Procedure가 접근할 수 있는 곳에 Parameter를 넣고,

 

  Procedure로 Control을 넘긴 뒤, Procedure는 Memory 자원을 획득합니다.

 

  이후 Procedure는 작업을 수행하고, 결과 값을 호출한 프로그램이 접근할 수 있는 장소에 저장하고,

 

  Procedure는 Control을 반납합니다.

 

 

- $a0 - $a3: 전달한 인수를 가지고 있는 Parameter Register.

 

- $v0 - $v1: Return Value Register.

 

- $ra: 호출한 곳으로 되돌아가기 위한 복귀 주소를 가지고 있는 Register.

 

 

- jal Address : 지정된 주소로 Jump하면서, 동시에 다음 명령어의 주소를 $ra에 저장합니다.

 

- jr $ra : jr 명령어는 레지스터에 저장된 주소로 Unconditional Jump하라는 명령어입니다.

 

 

- $t는 프로시저 호출 시, 피 호출 프로그램이 값을 보존해주지 않는 임시 레지스터이고,

 

  $s는 프로시저 호출전과 호출 후의 값이 같게 유지되어야 하는 레지스터입니다.

 

  보존되어야 할 레지스터 값들은 Stack에 저장합니다.

 

  $s외에도 $sp, $ra Register 값들도 보존되어야 합니다. $a, $v는 보존되지 않습니다.

 

 

- Procedure Frame: 프로시저의 저장된 레지스터와 지역변수를 가지고 있는 Stack 영역.

 

- Frame Pointer = Base Pointer: Procedure Frame의 첫 번째 워드를 가리키는 Pointer.

 

  Frame Pointer로 Procedure가 다른 Procedure,

 

  호출한 프로그램의 Stack에 특별한 권한없이 접근하지 못하도록 막습니다.

 

Register Name Register Number Usage
$zero 0 The Constant Value 0
$at 1 Assembly Only
$v0 - $v1 2 - 3 Values for Results
$a0 - $a3 4 - 7 Arguments
$t0 - $t7 8 - 15 Temporaries
$s0 - $s7 16 - 23 Saved
$t8 - $t9 24 - 25 More Temporaries
$k0 -$k1 26 - 27 OS Only
$gp 28 Global Pointer
$sp 29 Stack Pointer
$fp 30 Frame Pointer
$ra 31 Return Address

 


 

6. 2. Jumping

 

- Register에 32bit 상수를 채우고 싶으면 lui 명령어를 이용해 상위 16bit를 채우고,

 

  ori 명령어를 이용해 하위 16bit를 채우면 됩니다.

 

  ex) lui $s1, 50

 

        ori $s1, $s1, 100

 

  Compiler, Assembler는 큰 숫자를 직접 다룰 수 없기 때문에 몇 조각으로 나눈 후

 

  Register에서 다시 재조립해야 합니다.

 

 

[J Type]

 

op address

 

- op는 6bit, address는 26bit.

 

- Jump할 주소를 계산하는 방법은 다양합니다.

 

  Operand의 Constant, Register 값을 주소로 사용할 수 있고,

 

  Constant + Register를 계산해서 주소로 사용할 수 도 있습니다.

 

  또는 PC 값을 이용해서 PC값과 명령어내의 상수의 합을 더해서 주소로 사용할 수 도 있습니다.

 

 

- ex) j 100

 

2 100

 

- 100은 word 크기이므로 실제로는 메모리주소 400에 접근하게 됩니다.


'Computer Science > Computer Architecture' 카테고리의 다른 글

08. Arithmetic Operations  (0) 2025.04.29
07. Compiler  (0) 2025.04.25
05. Logical Operation and Branch  (0) 2025.04.24
04. Instruction Format  (0) 2025.04.23
03. Instructions - Load and Store  (0) 2025.04.22
Comments