ISA와 어셈블리
RISC-V의 레지스터 x0(zero)의 성질로 올바른 것은?
- A읽으면 항상 0이고, 값을 써도 변하지 않는다
- B함수의 복귀 주소를 보관한다
- C직전 연산의 결과가 0이었는지를 나타내는 플래그가 된다
정답과 해설 보기
정답: A. 읽으면 항상 0이고, 값을 써도 변하지 않는다
x0는 항상 0을 반환하는 특수한 레지스터이며 쓰기는 무시됩니다. 0이라는 상수를 언제든 쓸 수 있으므로 'add rd, rs, x0'으로 값 복사, 'addi rd, x0, 5'로 상수 설정, 결과를 버리고 싶을 때는 쓰기 대상을 x0으로 하는 등의 사용이 가능하여 전용 명령어를 늘리지 않아도 됩니다. 복귀 주소는 x1(ra)에 들어갑니다. RISC-V는 연산 결과 플래그를 갖지 않으며, 분기 명령어가 두 레지스터를 직접 비교합니다.