[컴퓨터구조] I-format Instructions: lui

젠니·2023년 9월 29일
0

컴퓨터구조

목록 보기
7/11

I-format Instructions

ori $s0, $0, 0x007d0900

$s0의 값을 0000 0000 0111 1101 0000 1001 0000 0000 (=0x007D0900) 로 만들고 싶을 때

이 경우, 0x007d0900이 16bit로는 표현이 안되고, 32bit로는 표현된다.

ori를 32bit로 표현하기 위해서는 I-format을 사용해야하는데, 이럴 때 사용하는게 lui instruction이다.

lui rt, constant

  • 16bit 상수를 rt의 왼쪽 (upper) 16bit에 쓴다.
  • rt의 오른쪽 (lower) 16bit는 0x000 으로 쓴다.

하지만, 여기서 내가 원하는 것은 0x007D가 아닌, 32bit 0x007D0900 이었다.

현재 $s0가 0000 0000 0111 1101 0000 0000 0000 0000 (=007D) 으로 채워졌다면, 이젠 아래쪽을 0900으로 채워야한다.

🤔 ori instruction을 통해 나머지를 채우는데, 물음표는 뭐로 채워야할까?
-> ori는 logical instruction이기 때문에 zero extension 해준다.

이렇게 연산하면, 원하는 0x007D0900를 만들 수 있다.

Exercise ??(질문)

$t0의 값을 0000 0000 1111 1111 0000 0000 0000 1111 (=0x 3C08 00FF) 로 쓰려면?

1. lui $t0, 0x00FF 수행
-> $t0 = 0000000011111111 0000000000000000
-> 얘는 앞 2진수 or 뒤 16진수를 기준으로 상수를 찾는다.
2. ori $t0, $t0, 15 (=F) 수행
-> $t0 = 0000000011111111 0000000000001111
-> 얘는 뒤 2진수를 기준으로 해당 10진수를 찾는다.

profile
젠니의 개발 라이푸우

0개의 댓글

관련 채용 정보