오래 못 할 짓 하지 않기
[ 컴퓨터 구조 ] 7. MIPS Addressing Mode 본문
도입 : 우리는 여태 32비트를 사용해왔다.
그 중에서 우리가 주소를 위해서는 할당된 개수만큼의 비트만 사용할 수 있었음.
만약에 할당된 거 이상으로 더 표현해야한다면 어떻게 표현할 수 있나??
==> MIPS 스는 LUI 라는 Instruction을 사용한다.
LUI $t0,255 ( Load Upper Immediately )
라고 하면, 32비트가 있는 t0 Register의 Upper, Lower가 있는데
그 중 Upper에 255를 넣고, Lower는 모두 0으로 채운다.
문제 ) MIPS 코드에 32비트에 0x0003D 0900 이 Hexa number를 s0 register에 넣으려면??
--> 1) 우선 앞에 있는 0x는 뗀다 ,
2) 저 Hexa decimal 8개 =32비트이므로, 0003D / 0900을 Upper 와 Lower로 나눠준다.
3) LUI 를 이용하여 t0 레지스터에 Upeer에 003D를 넣는다 => 003D 0000
LUI $t0 , 0x003D
4) ORI 를 이용하여 뒤에 0000인 Lower를 우리가 입력하는 것으로 들어가게 한다.
ORI $s0, $t0,0X0900 (t0 register에 0X0900 or 연산을 한 결과를 s0 register에 넣는다)
OR immediately
앞에는 값이 다 차있으니 그냥 그대로 감.
뒤(lower)는 다 0이니까 우리가 넣는 값으로 들어감
Extension
1) Sign Extension
: Arithmetic 연산할 때 사용
주로 + - 연산할 때 씀.
addi 에서 음수면 Upper는 1로 채우고, 양수면 0
lower는 해당 음수를 표현
* Immediately 값은 16비트로만 들어올 수 있다. 그럼 Register에는 Upper 16bits가 남는데,
그런 경우에는 들어온 값의 부호에 따라 Upper 숫자를 통일시킨다 이말
2) Zero Extension
: : Logic 연산할 때 사용
ORI 연산할 때나 그런 류의논리 연산을 할 때도 뒤에 16비트만 사용하고 Upper는 사용하지 않는다.
그럼? 앞 비트는 굳이 이상한 숫자로 있는 거보다 깨끗하게 0으로 통일시켜놓는다.
Pseudo Instructions
:원래 MIPS Inst에 있는 게 아닌데 마치 있는 것 처럼 사용하는 명령어
MIPS 가 알아서 처리함
효과: 코드를 더 간략화 시킬 수 있다~
주로
이런 게 있음
Move (Copy)라는 명령어는 없지만
저렇게 쓰면 아래 add 저거처럼 알아들음
그 외)
우리가 아는 Addressing Mode중에 MIPS에서 사용하는 것들
1) Immediate Addressing
2) Register Addressing
3) Base Addressing
4) PC - Relative Addressing
5) Pusudo-direct Addressing
Exercise)
(출처)
한동대학교 용환기 교수님 - 컴퓨터구조
'2학년 2학기 > 컴퓨터 구조' 카테고리의 다른 글
[ 컴퓨터 구조 ] 9. Overflow (Data path) (0) | 2023.10.03 |
---|---|
[ 컴퓨터 구조 ] 8. Procedure (0) | 2023.10.02 |
[ 컴퓨터 구조 ] 6. MIPS Instructions (0) | 2023.09.24 |
[ 컴퓨터 구조 ] 5. MIPS 에 관하여 (2) - Control branch (0) | 2023.09.23 |
[ 컴퓨터 구조 ] # Qtspim (0) | 2023.09.21 |