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