본문 바로가기
컴퓨터/컴퓨터구조

[UCB CS61C] Lec09 RISC-V Logical Instructions

by 봄여름가을 2024. 1. 9.
Logical Instructions
  • 항상 2개의 variant가 있다. 하나는 register용(and), 하나는 immediate용(andi)이다.
  • 비트마스크용도로 사용된다.
  • NOT은 존재하지 않는다! 대신에 모든 숫자에 1을 채운 것과 xor을 하여 해결한다. For simplicity!
Logical Shifting
  • sll, slli : 몇 bit만큼 왼쪽으로 옮겨준 뒤에 오른쪽에는 0을 삽입해준다. 즉 곱셈을 해준 것과 같은 효과다.
  • 예를 들어서 12로 곱하고 싶다면, 8로 곱해준 결과와 4로 곱해준 결과를 더해주는 식으로 한다.
    slli x11, x12, 2 # x11 = x 12 << 2
  • srl, srli는 오른쪽으로 옮겨준 뒤에 왼쪽에는 0을 삽입해 준다.(>>)
Arithmetic Shifting
  • sra, srai: 몇 bit만큼 오른쪽으로 옮겨준 뒤에 왼쪽에는 0이 아닌 high-order sign bit을 채워준다. 2의 제곱수로 나누어준 것처럼 보일 수 있지만 그렇지 않다.
    • 반례: odd negative numbers! C에서는 0을 향한 방향으로 버림하게 되어 있는데, 이렇게 나누어줄 경우 그렇게 되지 않는다.

댓글