instruction을 조절해서 새로운 문제를 푸는 데 도움이 됩니다. instruction이라는 것이 어떻게 구성이 되어 있는지 조금 더 깊이 살펴보면 0과 1로 이루어진 비트스트림으로 구성이 되어 있습니다.
MIPS의 경우 고정된 비트스트림을 가지고 있으며 opcode와 operand의 위치가 일정하게 지정이 되어 있습니다.
어셈블리 프로그래밍은 머신코드와 동일한 프로그램을 갖지만 사람이 읽을 수 있는 프로그래밍을 말합니다. 머신의 입장에서 특성을 이해하는 과정이 필요합니다.
MIPS ISA의 구조
Simple
R0 ~ R31의 레지스터, 고정된 사이즈 및 opcode 위치 고정되어 있음
MIPS instrucion set 구조에서 명령어는 R 타입, I타입, J타입으로 되어 있습니다.
일반적인 카테고리
- R-type ALU ops
- I-type ALU ops
- Load
- Store
- Jump
- Branch
R타입 ALU OPS
opcode | rs | rt | rd | shamt | funct |
31~26 | 25~21 | 20~16 | 15~11 | 10~6 | 5~0 |
3개의 레지스터가 rs, rt, rd로 사용이 되며 opcode와 함께 function code가 지정이 되어 어떤 ALU인지 지정을 할 수 있도록 되어 있습니다.
이것이 마치 배열처럼 이해하시면 이해가 쉬울 것입니다.
R[rd] = R[rs] + R[rt]
프로그램의 instruction의 실행이 끝난 다음 PC = PC+4를 합니다. 모든 명령어가 4바이트로 크기가 고정되어 있기 때문에 4를 더하는 것입니다.
I-type ALU ops
opcode | rs | rt | immediate |
31~26 | 25~21 | 20~16 | 15~0 |
R[rt] = R[rs] + imm
i 타입 같은 경우 rt 레지스터에 저장을 하는 것을 확인할 수 있습니다.
LOAD
opcode | rs | rt | immediate |
31-26 | 25-21 | 20-16 | 15-0 |
STORE
opcode | rs | rt | immediate |
31 ~ 26 | 25 ~ 21 | 20 ~ 16 | 15 ~ 0 |
JUMP
opcode | address |
31 ~ 26 | 25 ~ 0 |
BRANCH
opcode | rs | rt | iummediate |
31 ~ 26 | 25 ~ 21 | 20 ~ 16 | 15 ~0 |
if(R[rs] == R[rt])
PC = PC + b_target
'IT 프로그래밍 > 컴퓨터구조' 카테고리의 다른 글
[컴퓨터구조] Processor1 (0) | 2024.12.17 |
---|---|
[컴퓨터구조] processor1 (0) | 2024.12.17 |
[컴퓨터구조] Dapapath (1) | 2024.12.11 |
[컴퓨터구조] CPU 구조 (0) | 2024.12.11 |
컴퓨터 응용 분야 (0) | 2024.09.06 |