본문 바로가기
🏫학부 공부/컴퓨터구조

[컴구] 연산자와 피연산자

by meteorfish 2023. 10. 11.
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