ISA와 어셈블리
조건 분기 구조에 대해 RISC-V와 x86의 차이로 올바른 것은?
- ARISC-V는 플래그를 보고 분기하고, x86은 분기 명령어가 두 레지스터를 직접 비교한다
- B둘 다 조건 분기 명령어가 없고 테이블 참조로 점프 대상을 정한다
- CRISC-V는 분기 명령어가 두 레지스터를 직접 비교하고, x86은 비교 명령어가 설정한 플래그를 보고 분기한다
정답과 해설 보기
정답: C. RISC-V는 분기 명령어가 두 레지스터를 직접 비교하고, x86은 비교 명령어가 설정한 플래그를 보고 분기한다
x86에서는 'cmp eax, ebx'로 비교하여 제로나 캐리 등의 플래그(조건 코드)를 설정하고, 다음의 'je'나 'jl'이 플래그를 보고 분기합니다. RISC-V는 플래그를 갖지 않으며, 'beq a0, a1, L'이나 'blt a0, a1, L'처럼 분기 명령어 자체가 두 레지스터를 비교합니다. 플래그 같은 암묵적 상태가 없으므로 명령어를 재배열하거나 동시 실행할 때 의존 관계를 추적하기 쉬워집니다.