32-bit Constants | 32비트 상수
대부분의 상수는 작기 때문에 16-bit 즉, 2-byte의 즉시값이 충분하다.
그러나 가끔 32-bit 상수가 필요할 때가 있다. 이때는 lui rt, constant를 사용한다.
이 명령어는 16-bit 상수를 rt의 왼쪽 16비트로 복사하고 rt의 오른쪽 16비트를 0으로 지운다.
Branch Addressing | 브랜치 주소 지정
브랜치 명령어가 옵코드, 두 개의 레지스터 및 대상 주소를 지정한다.
대부분 브랜치 대상은 근처 브랜치이며, 그 전 혹은 후일 수 있다.
PC 상대 주소 지정을 사용하여 대상 주소를 계산한다.
대상 주소는 PC + Offset x 4로 계산이 된다. 이때 PC는 이미 4만큼 증가 되었다.
Jump Addressing | 점프 주소 지정(분기 명령어)
Jump(j and jal) 대상이 세그먼트 어디에 있든지 상관 없다.
명령어에 전체 주소를 인코딩한다.
직접 jump addressing 이다.
대상 주소 = PC 31 ··· 28 : (address x 4)이다.
Branching Far Away | 먼 분기 대상
만약 분기 대상이 16-bit offset으로 인코딩할 수 없을 정도로 멀리 떨어져 있다면 어셈블러는 코드를 다시 작성한다.
(예를 들어서)
beq $s0,$s1, L1
↓
bne $s0,$s1, L2
j L1
L2: …