ISA와 어셈블리
RISC-V에서 상수 0x12345FFF를 lui와 addi의 2개 명령어로 만들 때 올바른 조합은?
- Alui t0, 0x12346 다음에 addi t0, t0, -1
- Blui t0, 0x12345 다음에 addi t0, t0, 0xFFF
- Clui t0, 0x12345 다음에 addi t0, t0, -1
정답과 해설 보기
정답: A. lui t0, 0x12346 다음에 addi t0, t0, -1
addi의 즉치값은 부호 확장되므로, 하위 12비트가 0xFFF(최상위 비트가 1)일 때는 -1로 더해집니다. 그래서 lui로 만드는 상위를 1 큰 0x12346으로 해 두고, 0x12346000에 -1을 더해 0x12345FFF를 얻습니다. 하위 12비트의 비트 11이 1일 때 상위에 1을 더해 둔다는 이 보정은 어셈블러나 링커가 자동으로 수행합니다.