728x90
연산자
Arithmetic Operations
- 덧셈, 뺄샘과 3개의 피연산자로 이루어진 연산자.
add a, b, c # a= b+c |
C Language
f = (g+h) - (i+j)
MIPS
add t0, g, h;
add t1, i, j;
sub f, t0, t1;
피연산자
1. Register Operands
- MIPS는 피연산자의 제약이 많음.
- Operand를 레지스터 사용.
- MIPS 레지스터 파일은 32 x 32 (bit)
add $t0, $s1, $s2
add $t1, $s3, $s4
sub $s0, $t0, $t1
2. Memory Operands
- 구조체나 배열 같은 자료 구조는 레지스터로 감당 불가 (용량 작음)
- 따라서, 메모리에 저장하여 사용.
- 연산은 레지스터만 가능하므로 레지스터로 옮기는 Load, Store 작업 필요 (lw, sw)
- 메모리 주소는 1byte
- MIPS는 Big Endian 사용.
C Language
g = h + A[8];
MIPS
lw $t0, 32($s3) # load word
add $s1, $s2, $t0
# 워드 당 4 byte 이므로 4*8=32
Register vs. Memory
접근 속도: Register > Memory
사전 작업 : Memory는 load, store 필요
- 컴파일러는 레지스터에 많은 변수 저장하려 함.
따라서, 레지스터 최적화가 중요
3. Immediate Operands
- 작은 상수를 명령어에 즉시 넣어 사용
addi $s3, $s3, 4
728x90
'🏫학부 공부 > 컴퓨터구조' 카테고리의 다른 글
[컴구] 메모리 계층구조 (0) | 2023.12.13 |
---|---|
[컴구] 프로세서 - 2 (0) | 2023.11.21 |
[컴구] 프로세서 - 1 (0) | 2023.11.16 |
[컴구] Multiplication and Division (0) | 2023.10.21 |
[컴구] 컴퓨터 추상화와 기술 (0) | 2023.10.21 |