MIPS Instructions #3

charrrming·2022년 3월 30일

Computer Architecture

목록 보기
3/17

1. Data Transfer Instructions

- cpu는 general 32개밖에 없기 때문에 메모리와 data transfer 필요
- 메모리의 데이터에 접근하기 위해서 메모리 주소 필요! (레지스터는 이름으로 접근)

- Load : 메모리 -> 레지스터
- Store : 레지스터 -> 메모리

2. 메모리

- 메모리는 byte addressed (1바이트 = 8비트)
- lw, sw -> 메모리 주소는 4의 배수 (word 단위라서)
- MIPS는 "Big Endian" -> MSB가 가장 작은 주소에 들어간다
C code:
	g = h + A[8];
    
Compiled MIPS code:
	lw $t0, 32($s3)		// $s3 = base address of A
    add $s1, $s2, $t0	// $s1 = g, $s2 = h
    
C code:
	A[12] = h + A[8];	// 4*8
        
Compiled MIPS code:
	lw $t0, 32($s3)		// $s3 = base address of A
    add $t0, $s2, $t0	// $s2 = h
    sw $t0, 48($s3)

3. I-format (lw,sw)

- R-format은 3개의 피연산자(레지스터) 필요했음 (rs, rt, rd)
- I-format에서는 피연산자 1개가 '상수'로 저장되어 있음 (레지스터, 메모리 접근 필요 없음)
- imm 필드(16비트) 범위 : -2^15 ~ 2^15-1
- addi rt, rs, imm	// addi, $t0, $s3, -12
- lw rt, address	// lw $t0, 24($s3) 
	= s3의 주소 + 24의 주소의 메모리에서 32비트 읽어와라
- sw rt, address	// sw $t2, 8($s3)

0개의 댓글