GNU as has "la %r4,8(%r3)" as an alias for "addi %r4,%r3,8", meaning to load the address of the thing at 8(%r3). Our 'la', now 'li32', makes an addis/ori pair to load an immediate 32-bit value. For example, "li32 r4,23456789" loads a big number.
		
			
				
	
	
		
			89 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			89 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  * $Source$
 | |
|  * $State$
 | |
|  */
 | |
| 
 | |
| %token <y_word> GPR
 | |
| %token <y_word> SPR
 | |
| %token <y_word> FPR
 | |
| %token <y_word> CR
 | |
| %token <y_word> C
 | |
| 
 | |
| %token <y_word> OP
 | |
| %token <y_word> OP_BF
 | |
| %token <y_word> OP_BF_BFA
 | |
| %token <y_word> OP_BF_FRA_FRB
 | |
| %token <y_word> OP_BF_L_RA_RB
 | |
| %token <y_word> OP_BF_L_RA_SI
 | |
| %token <y_word> OP_BF_L_RA_UI
 | |
| %token <y_word> OP_BF_U_C
 | |
| %token <y_word> OP_BO_BI_BDA
 | |
| %token <y_word> OP_BO_BI_BDL
 | |
| %token <y_word> OP_BO_BI_BH
 | |
| %token <y_word> OP_BT_C
 | |
| %token <y_word> OP_BT_BA_BB
 | |
| %token <y_word> OP_FLM_FRB_C
 | |
| %token <y_word> OP_FRS_RA_D
 | |
| %token <y_word> OP_FRS_RA_RB
 | |
| %token <y_word> OP_FRT_C
 | |
| %token <y_word> OP_FRT_FRA_FRB_C
 | |
| %token <y_word> OP_FRT_FRA_FRC_FRB_C
 | |
| %token <y_word> OP_FRT_FRA_FRC_C
 | |
| %token <y_word> OP_FRT_FRB_C
 | |
| %token <y_word> OP_FRT_RA_D
 | |
| %token <y_word> OP_FRT_RA_RB
 | |
| %token <y_word> OP_L
 | |
| %token <y_word> OP_LEV
 | |
| %token <y_word> OP_LIA
 | |
| %token <y_word> OP_LIL
 | |
| %token <y_word> OP_L_RB
 | |
| %token <y_word> OP_RA_RB
 | |
| %token <y_word> OP_RB
 | |
| %token <y_word> OP_RS
 | |
| %token <y_word> OP_RS_FXM
 | |
| %token <y_word> OP_RS_L
 | |
| %token <y_word> OP_RS_RA
 | |
| %token <y_word> OP_RS_RA_C
 | |
| %token <y_word> OP_RS_RA_D
 | |
| %token <y_word> OP_RS_RA_DS
 | |
| %token <y_word> OP_RS_RA_NB
 | |
| %token <y_word> OP_RS_RA_RB
 | |
| %token <y_word> OP_RS_RA_RB_C
 | |
| %token <y_word> OP_RS_RA_RB_MB5_ME5_C
 | |
| %token <y_word> OP_RS_RA_RB_MB6_C
 | |
| %token <y_word> OP_RS_RA_RB_ME6_C
 | |
| %token <y_word> OP_RS_RA_SH_MB5_ME5_C
 | |
| %token <y_word> OP_RS_RA_SH_MB6_SH_C
 | |
| %token <y_word> OP_RS_RA_SH_ME6_SH_C
 | |
| %token <y_word> OP_RS_RA_SH5_C
 | |
| %token <y_word> OP_RS_RA_SH6_C
 | |
| %token <y_word> OP_RS_RA_UI
 | |
| %token <y_word> OP_RS_RA_UI_CC
 | |
| %token <y_word> OP_RS_RB
 | |
| %token <y_word> OP_RS_SPR
 | |
| %token <y_word> OP_RS_SR
 | |
| %token <y_word> OP_RT
 | |
| %token <y_word> OP_RT_FXM
 | |
| %token <y_word> OP_RT_RA_C
 | |
| %token <y_word> OP_RT_RA_D
 | |
| %token <y_word> OP_RT_RA_DS
 | |
| %token <y_word> OP_RT_RA_NB
 | |
| %token <y_word> OP_RT_RA_RB
 | |
| %token <y_word> OP_RT_RA_RB_C
 | |
| %token <y_word> OP_RT_RA_SI
 | |
| %token <y_word> OP_RT_RA_SI_addic
 | |
| %token <y_word> OP_RT_RB
 | |
| %token <y_word> OP_RT_SPR
 | |
| %token <y_word> OP_RT_SR
 | |
| %token <y_word> OP_RT_TBR
 | |
| %token <y_word> OP_TH_RA_RB
 | |
| %token <y_word> OP_TO_RA_RB
 | |
| %token <y_word> OP_TO_RA_SI
 | |
| 
 | |
| %token <y_word> OP_LI32
 | |
| 
 | |
| /* Other token types */
 | |
| 
 | |
| %type <y_word> c
 | |
| %type <y_word> e16 u8 u7 u6 u5 u4 u2 u1
 | |
| %type <y_word> nb ds bda bdl lia lil
 |