ISA와 어셈블리

RISC-V 명령어 'slli t0, a0, 3'의 결과 t0는 a0 값의 몇 배가 되는가? (오버플로는 고려하지 않음)

  1. A8배
  2. B3배
  3. C6배
정답과 해설 보기

정답: A. 8배

slli(shift left logical immediate)는 레지스터의 값을 지정한 비트 수만큼 왼쪽으로 시프트하고 빈 하위 비트를 0으로 채웁니다. 2진수에서는 1비트 왼쪽으로 시프트하면 2배가 되므로 3비트라면 2의 3제곱=8배입니다. 곱셈 명령어보다 빠른 경우가 많으므로 컴파일러는 2의 거듭제곱 곱셈을 시프트로 치환합니다. 배열 요소의 주소를 계산할 때도 자주 사용됩니다.

이 분야 연습하기 분야로 돌아가기

ISA와 어셈블리의 다른 문제

  1. a0에 int형(4바이트) 배열 a의 시작 주소, a1에 첨자 i가 들어 있다. 위의 코드가 a2에 읽어 들이는 것으로 올바른 것은?
  2. x86의 명령어 'add eax, [rbx]'처럼 연산 명령어가 메모리 상의 값을 직접 사용할 수 있는 방식에 대해 올바른 것은?
  3. 현재의 고성능 x86 CPU가 복잡한 명령어를 내부에서 어떻게 실행하는지에 대한 설명으로 올바른 것은?
  4. RISC-V의 M 확장이 기본 정수 명령어 집합에 추가하는 명령어는?
  5. RISC-V의 C 확장(압축 명령어)의 주된 목적은?