MIPS Instruction Format & Addressing Modes
- format
- r format: 가장 기본 포맷, 대부분이 r 포맷임
- rs, rt, rd 5bit인 이유: 레지스터 개수가 32(어느 레지스터에 넣을지 결정)
- shamt 5bit: 레지스터 1개 32bit(몇 칸 이동할지 적어주는 역할)
- i format: 상수값 사용을 위한 포맷, 상수와 인덱스를 나타내기 위해 16bit 할당
-
종류
- a/l: addi
- branch: beq, bne
1. lw, sw는 상수 byte 그대로 이동 --> 몇칸 떨어져 있는지 인덱스이므로 4byte단위가 아니라 1byte 단위임
2. beq, bne는 명령어 주소를 찾아가므로 --> 현재 위치로부터 찾아가는 것이 명령어 위치이므로 4byte단위임 ==> offset * 4를 한 값이 떨어진 위치임, 이를 통해 나타낼 수 있는 범위가 더 커짐
- data: lw, sw
- j format: jump address를 위해 16bit 이상 필요
- 종류
- jal, j
- j는 adress는 절대주소, i는 Offset을 표현한 상대주소임
- 요약
stored program
- 절차
- fetch & 레지스터에 넣음(instruction register)
- excute
- next instruction fetch
- 16bit 이상 상수
- LUI(load upper immediate): 앞쪽 16bit는 주어진 bit값으로 채우고, 뒤쪽 16bit는 0으로 채움
- 뒤쪽 bit는 andi, ori를 사용해서 채움
- 상수값은 16bit까지 밖에 수용을 못하므로 그 이상의 bit일 경우 lui 사용
- pseudo code
- 어셈블리 명령어가 결합된 형태 --> 의미가 직관적
- 컴퓨터내 작업 수행시 변환 필요
- ex) MOVE, BLT, BGT, BGE
- la: label의 주소값 레지스터에 할당
- li: 상수값 레지스터에 할당
- move: 레지스터간 데이터 이동
- mips addressing mode