28 lines
		
	
	
	
		
			455 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			28 lines
		
	
	
	
		
			455 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
.define lar
 | 
						|
.sect .text
 | 
						|
.sect .rom
 | 
						|
.sect .data
 | 
						|
.sect .bss
 | 
						|
.sect .text
 | 
						|
 | 
						|
!R1 contains description address
 | 
						|
!R3 contains element number
 | 
						|
!base address is on stack
 | 
						|
lar:
 | 
						|
	popl	saveret, *RR14
 | 
						|
	sub	R3, 0(R1)
 | 
						|
	ld	R0, 4(R1)		!nr of bytes per element
 | 
						|
	mult	RR2, R0
 | 
						|
	add	R3, *RR14
 | 
						|
	add	R3, R0
 | 
						|
	sra	R0			!nr of words per element
 | 
						|
	jr	EQ, 1f
 | 
						|
	dec	R3, $2
 | 
						|
	lddr	*RR14, *RR2, R0
 | 
						|
	inc	R15, $2
 | 
						|
	jr	2f
 | 
						|
1:	ldb	RL2, -1(R3)
 | 
						|
	ldb	RH2, $0
 | 
						|
	ld	*RR14, R2
 | 
						|
2:	ldl	RR2, saveret
 | 
						|
	jp	*RR2
 |