UNIT-SPECIFIC ACTIVE LESSON · 2-6

`jal ra,32` 매칭

J-type jump offset과 rd를 확인하세요.

학습 목표: J-type `jal` encoding에서 rd와 분산 signed offset을 복원해 `jal ra,32`를 함수 호출 형태로 판별한다.
공식 근거 범위: SoSe26 Probeklausur 시험 p6 Aufgabe 2의 `jal ra,32` 후보·bit열과 공식 해설 p7의 해당 pairing.

왜 이 소문제를 따로 배우는가

`jal`은 단순히 PC를 바꾸는 것과 동시에 link address를 남깁니다. target 절대값과 PC-relative offset을 구분하고 rd까지 읽어야 call, unconditional jump, 다른 위치의 jump를 구분할 수 있습니다.

이 페이지는 Aufgabe 2의 공통 템플릿이 아니라 2-6 `jal ra,32` 매칭에 필요한 내용만 담습니다. 챕터 전체 배경이 필요하면 Aufgabe 2 개념 수업을 먼저 읽으세요.

이 소문제에서 실제로 쓰는 용어

정의뿐 아니라 이 문제의 어느 판단에 쓰이는지까지 연결합니다.

jal
PC-relative target으로 jump하면서 현재 `PC+4`를 rd에 저장하는 J-type instruction입니다.이 소문제에서: opcode `1101111`, rd=ra, offset +32를 함께 검증합니다.
J-immediate
J-type bit열에 `imm[20|10:1|11|19:12]` 순으로 흩어진 signed offset입니다.이 소문제에서: 조각을 재배열하고 implicit bit 0을 붙여 +32를 복원합니다.
link register
jump 이후 돌아올 `PC+4`를 받는 rd입니다.이 소문제에서: rd=ra(x1)이면 함수 호출 모양임을 설명합니다.
PC-relative offset
절대 target 주소가 아니라 현재 PC와 target 사이의 signed 차이입니다.이 소문제에서: encoding의 +32를 `target=PC+32`로 해석합니다.

이 소문제 전용 규칙과 종이 작업

두 효과 동시 규칙

`jal rd,offset`은 `rd←PC+4`와 `PC←PC+offset` 두 state update를 수행합니다.

종이에: link와 target을 서로 다른 두 줄의 식으로 씁니다.

J-immediate 재배열 규칙

encoding 위치는 `bit31=imm20`, `bits30:21=imm10:1`, `bit20=imm11`, `bits19:12=imm19:12`이며 `imm0=0`입니다.

종이에: `imm[20|19:12|11|10:1|0]` 값 순서로 다시 놓습니다.

rd 의미 규칙

rd=ra이면 return address를 남기는 call 형태이고 rd=x0이면 link를 버리는 unconditional jump pseudo `j` 형태입니다.

종이에: rd 아래에 `link 보존` 또는 `link 폐기`라고 표시합니다.

Aufgabe 전체 흐름은 챕터 흐름도에서 확인할 수 있습니다. 여기서는 현재 판단에 직접 필요한 규칙만 적용합니다.

이 소문제 전용 작은 예제

`jal x0,16`을 hex로 encoding하고 실행 의미를 적으세요.

주어진 것

  • jal opcode는 `1101111`입니다.
  • offset은 짝수이며 rd=x0입니다.
  1. +16을 J-immediate 조각으로 나눕니다.

    offset bit는 encoding에서 연속으로 저장되지 않습니다.

    종이 산출물: `imm[10:1]=0000001000`, 나머지 상위 조각 0, `imm[0]=0`

  2. rd=x0와 opcode를 붙여 bit열을 만듭니다.

    link를 버리는 jump 형태를 encoding에 반영합니다.

    종이 산출물: `00000001000000000000 00000 1101111`

  3. hex와 두 state update를 확인합니다.

    encoding뿐 아니라 PC-relative 의미와 link 폐기를 검산합니다.

    종이 산출물: `0x0100006F; PC←PC+16, x0 write discarded`

예제 답과 독립 검산 보기

`jal x0,16`은 `0x0100006F`이고, link를 버리며 PC를 현재 PC+16으로 바꿉니다.

독립 검산: rd만 x1로 바꾸면 hex의 rd field가 `0x80`만큼 증가하고 ra에 PC+4가 남는지 확인합니다.

이 instruction의 field를 실제로 채우기

아래 표는 이 소문제만의 값입니다. 일반 format 표와 섞지 말고 각 행을 bit열에서 직접 가리켜 보세요.

formatJ-type jal
opcode1101111
rdra=x1
imm+32, PC-relative·조각 재배열

이제 실제 시험 문제를 micro-work로 풀기

공식 시험이 요구하는 것

J-type jump offset과 rd를 확인하세요.

공식 답을 보기 전, 내 답 먼저 남기기

완성 문장이 아니어도 좋습니다. 중간값·register·cycle·cache state처럼 채점 가능한 흔적을 먼저 적으세요.

각 작업의 중간 산출물을 직접 적고 완료 조건을 만족한 뒤 체크하세요. 단계별 이유·산출물·오류가 현재 소문제에 맞게 따로 작성되어 있습니다.

오른쪽 opcode `1101111`을 찾아 J-type jal로 분류합니다.

왜 하는가
J-immediate layout을 적용하기 위한 format 확정 단계입니다.
종이 산출물
`bits[6:0]=1101111 → jal/J-type`
완료 조건
jalr의 `1100111`과 구분해 후보를 골랐습니다.
막혔을 때 단계 힌트·대표 오류

힌트: 두 opcode는 가운데 한 bit가 다르므로 끝 7 bit 전체를 읽으세요.

이 단계의 대표 오류: jalr와 jal을 같은 opcode로 취급하는 것입니다.

rd=ra(x1)를 확인합니다.

왜 하는가
jal이 jump하면서 `PC+4`를 어느 register에 남기는지 결정하고 함수 호출 형태를 식별합니다.
종이 산출물
`rd bits[11:7]=00001=ra; ra←PC+4`를 적습니다.
완료 조건
ABI 이름, x번호, 5-bit field, link 효과가 연결되어 있습니다.
막혔을 때 단계 힌트·대표 오류

힌트: bits[11:7]은 J-type에서도 연속된 rd field입니다.

이 단계의 대표 오류: ra를 jump target source register로 읽는 것입니다.

J-immediate 조각을 재배열하고 sign-extend해 +32를 얻습니다.

왜 하는가
rd가 같은 다른 jal과 구분하려면 PC-relative offset까지 정확히 복원해야 합니다.
종이 산출물
`imm[20|19:12|11|10:1|0] = 32; target=PC+32`를 씁니다.
완료 조건
implicit 0, signed 해석, +32 target 식이 모두 있습니다.
막혔을 때 단계 힌트·대표 오류

힌트: encoding의 bits30:21이 imm[10:1]이고 마지막 bit 0은 저장되지 않습니다.

이 단계의 대표 오류: bit열 조각을 놓인 순서 그대로 읽거나 32를 절대 target 주소로 해석하는 것입니다.

공식 답을 열기 전 마지막 회상

`jal x0,label`은 어떤 pseudo instruction과 같은 역할인가요?

내 풀이 후 공식 결론·이유·대표 함정 확인

공식 결론

`jal ra,32` ↔ `00000010000000000000000011101111`.

왜 이 답이 되는가

`jal`은 PC-relative jump와 동시에 PC+4를 rd에 저장합니다. ra를 rd로 쓰면 함수 호출 모양입니다.

대표 함정

jump target 값 자체가 아니라 현재 PC에 더할 offset이 encoding됩니다.

명령어와 식을 줄 단위로 읽기

본문 속 code를 한 줄씩 분리했습니다. 각 줄에서 source, operation, destination을 표시하세요.

jal
jal ra,32
00000010000000000000000011101111

새 문제로 전이하기

세 문항은 앞 문장의 반복이 아닙니다. 직접 답을 입력하면 rubric의 필수 기준을 하나씩 검사하고, 첫 누락 기준을 알려 줍니다.

1. 개념 재구성

J-type encoding 위치를 실제 signed offset bit 순서로 복원하고 `jal rd,off`의 link와 target 효과를 식으로 쓰세요.

제출 후 모델 답 보기

encoding은 `bit31=imm[20]`, `bits30:21=imm[10:1]`, `bit20=imm[11]`, `bits19:12=imm[19:12]`, `imm[0]=0`입니다. 실행은 `rd←PC+4`, `PC←PC+off`입니다.

2. 변형 문제

PC=`0x2000`에서 `jal x5,-20`을 실행한다. 새 PC와 x5에 기록되는 값을 계산하고 call-like link가 보존되는지 말하세요.

제출 후 모델 답 보기

새 PC는 `0x2000-0x14=0x1FEC`이고 x5에는 link address `0x2004`가 기록됩니다. rd가 x0가 아니므로 call-like link가 보존됩니다.

3. 오류 진단

학생이 encoding의 +32를 절대 주소 `0x00000020`로 읽고 rd=ra를 target register라고 설명했습니다. 첫 의미 오류부터 두 효과를 바로잡으세요.

제출 후 모델 답 보기

첫 오류는 +32를 절대 주소로 해석한 것입니다. jal의 target은 `PC+32`입니다. rd=ra는 target source가 아니라 link destination이라 ra에 `PC+4`가 기록됩니다.

이 소문제를 끝냈다고 말할 수 있는 기준

이 소문제의 정확한 공식 페이지와 대조하기

왼쪽은 문제를 읽을 때, 오른쪽은 자신의 풀이를 끝낸 뒤에 확인하세요. 해설 이미지를 먼저 보면 중간 과정을 스스로 만드는 연습이 사라집니다.

2-6 관련 공식 시험 또는 해설 페이지
exam-p06.png · 클릭해 원본 크기로 확인
2-6 관련 공식 시험 또는 해설 페이지
solution-p07.png · 클릭해 원본 크기로 확인

Source: Probeklausur.pdf / Probeklausur Musterlösung und Hinweise.pdf · 시험 p6 · 공식 해설 p7 · SoSe26 Probeklausur 시험 p6 Aufgabe 2의 `jal ra,32` 후보·bit열과 공식 해설 p7의 해당 pairing.