35.3.7.2. UNCONDITIONAL JUMPS AND CALLS ON ALPHA
Alpha Branch Format
+-----------------------+
| 31..26 Opcode |
| 25..21 Ra |
| 20..0 disp |
+-----------------------+
Unconditional Branch
BxR Ra.wq,disp.al !Branch Format
{ update PC }
Ra <- PC
PC <- PC + ( 4 * SEXT(disp))
BR Unconditional Branch
BSR Branch to Subroutine
Note: Difference between BR and BSR is branch prediction hints.
BR predicted as branch (no push)
BSR predicted as call (push return address in branch prediction
stack)
BR 30
BSR 34
Alpha Memory Format
+-----------------------+
| 31..26 Opcode |
| 25..21 Ra |
| 20..16 Rb |
| 15..0 mdisp |
+-----------------------+
Jumps
JMP Ra.wq,(Rb.ab),hint !Memory Format
JSR Ra.wq,(Rb.ab),hint !Memory Format
RET Ra.wq,(Rb.ab),hint !Memory Format
JSR_COROUTINE Ra.wq,(Rb.ab),hint !Memory Format
{ update PC }
va <- Rbv AND (NOT 3)
Ra <- PC
PC <- va
Note: All jumps instructions have different branch predictions:
disp<15..14> Meaning Predict. Target Predict Stack Actions
00 JMP PC+{4*disp<13..0> -----
01 JSR PC+{4*disp<13..0> Push PC
10 RET Prediction stack Pop
11 JSR_COROUTINE Prediction stack Pop, Push PC
JMP 1A.0
JSR 1A.1
RET 1A.2
JSR_COROUTINE 1A.3
// ----------------------------------------------------------------------
Index Prev Next