ISA와 어셈블리

RISC-V의 'add' 명령어와 'addi' 명령어의 차이로 올바른 것은?

  1. Aadd는 정수를 더하고 addi는 부동소수점수를 더한다
  2. Badd는 메모리 상의 값을 더하고 addi는 레지스터의 값을 더한다
  3. Cadd는 레지스터끼리 더하고 addi는 레지스터와 명령어 안에 적힌 상수(즉치값)를 더한다
정답과 해설 보기

정답: C. add는 레지스터끼리 더하고 addi는 레지스터와 명령어 안에 적힌 상수(즉치값)를 더한다

'add rd, rs1, rs2'는 두 레지스터의 합을 rd에 넣고, 'addi rd, rs1, imm'은 레지스터와 명령어 안에 내장된 12비트 상수(즉치값)를 더합니다. 즉치값을 사용하면 상수를 일단 레지스터에 준비하는 수고를 덜 수 있습니다. RISC-V에는 뺄셈의 즉치 명령어가 없으며, 'addi t0, t0, -1'처럼 음수 즉치값을 더해 뺄셈을 합니다.

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

ISA와 어셈블리의 다른 문제

  1. 위의 RISC-V 코드를 실행한 후 레지스터 a2의 값은 얼마인가?
  2. RISC-V 명령어 'lw t0, 8(sp)'의 동작으로 올바른 것은?
  3. RISC-V의 조건 분기 명령어 'beq a0, a1, label'에서 분기 대상 label의 주소는 어떻게 표현되는가?
  4. 분기나 점프에 PC 상대 주소 지정을 사용하는 것의 이점으로 올바른 것은?
  5. RISC-V의 기본 명령어와 x86 명령어의 길이에 대해 올바른 것은?