jaljalr 명령어의 차이점

JAL(Jump and Link)과 JALR(Jump and Link Register) 명령어는 둘 다 RISC-V에서 점프(제어 흐름 변경)를 수행하고 반환 주소를 저장하는 역할을 하지만, 그 방식과 사용 시나리오에서 차이가 있습니다.

1. JAL (Jump and Link) 명령어

예시:

JAL x1, 100  ; x1은 retrun address

위 명령어는 현재 PC + 100 위치로 점프하며, PC + 4 (현재 명령어 다음 명령어의 주소)를 x1 레지스터에 저장합니다. 즉, 복귀할 주소를 저장하고 점프합니다.

2. JALR (Jump and Link Register) 명령어

예시:

JALR x1, x2, 20
JALR x0, x1, 0   ; x0은 zero, x1은 return address

이 명령어는 x2 레지스터의 값 + 20의 주소로 점프하고, PC + 4(다음 명령어 주소)를 x1 레지스터에 저장합니다.

차이점 요약:

  1. 점프 대상:
  2. 주소 계산 방식: