Chap 02. MIPS

2. Instructions: Language of the Computer

01. Instruction Set

Instruction Set이 하드웨어나 소프트웨어별로 다를 수는 있지만, 원리가 비숫하기 때문에 하나의 언어를 배우면 다른 언어도 배우기 쉽다.

02. MIPS Arithmetic Instructions

Instruction : [INS]  [저장변수]  [변수1] [변수2]
[저장변수] = [변수1] +/- [변수2]

  • 연산 명령어로 addsub가 있다.
  • 모든 연산은 한줄에 하나씩만 할 수 있다.
  • 연산에는 꼭 3개의 변수가 있어야한다.

03. Operands of MIPS Instructions: Registers

일반 언어와 다르게 어셈블리어에서는 직접 CPU에 존재하는 Register에 접근하기 때문에 변수의 개수나 이름을 마음대로 정할 수 없다.

  • 레지스터는 총 32개가 있다.
  • 하나의 레지스터는 32bits(=4byte)로 되어있으며 이를 하나의 word라고 부른다.
  • 레지스터의 수는 제한되어 있으므로 데이터들은 SRAM이나 DRAM에 저장되어 있다가 필요한 경우에만 불러와야 한다.
  • 메모리는 엄청 큰 1차원 배열의 형태로 되어있다.
  • 하나의 메모리는 모두 word(32bits)로 되어있다.

04. MIPS Data Transfer Instructions: Load

Instruction : lw(load word) [사용할 레지스터]  (index)[메모리의 0번째 자료의 주소가 담긴 레지스터]
[사용할 레지스터] = [메모리의 0번째 주소 + index]

  • Load는 연산을 실행하기 전 메모리에서 레지스터로 정보를 옮기는 작업이다.
  • Index는 모두 byte단위로 나타내야 한다.
g = h + A[8];
lw $t0 32($s3)       # 8*4(byte) = 32
add $s1 $s2 $t0

05. MIPS Data Transfer Instructions: Store

Instruction : sw(store word) [연산이 완료된 레지스터]  (index)[저장할 메모리의 0번째 자료의 주소가 담긴 레지스터]
[메모리의 0번째 주소 + index] = [연산이 완료된 레지스터]

  • Store은 연산을 실행한 후 레지스터에서 메모리로 정보를 옮기는 작업이다.
  • Index는 모두 byte단위로 나타내야 한다.
A[12] = h + A[8];
lw $t0 32($s3)       # 8*4(byte) = 32
add $s1 $s2 $t0
sw $t0 48($s3).      # 12*4(byte) = 48

06. Operands of MIPS Instructions: Constant

Instruction : addi(add immediate) [레지스터]  [레지스터] [상수]
[레지스터] = [레지스터] + [상수]

  • addi는 상수를 더해주는 연산이다.

좋은 웹페이지 즐겨찾기