123456789101112131415161718192021222324252627282930313233343536 |
- .define .aar
- .sect .text
- .sect .rom
- .sect .data
- .sect .bss
- .sect .text
- ! (on entry d0 contains the integer size in the descriptor)
- .aar:
- cmp.l #4, d0
- beq 9f
- move.l #EILLINS, -(sp)
- jmp .fatal
- 9:
- ! register usage:
- ! a0: descriptor address
- ! a1: base address
- ! d0: index
- ! The address is calculated by taking the relative index
- ! (index - lower bound), multiplying that with the element
- ! size and adding the result to the array base address.
- move.l (sp)+,a1 ! return address
- move.l (sp)+, a0 ! descriptor address
- move.l (sp)+, d0 ! index
- sub.l (a0), d0 ! relative index
- move.l a1,-(sp)
- move.l d0, -(sp)
- move.l 8(a0), -(sp) ! # bytes / element
- jsr .mlu
- move.l (sp)+,a1
- move.l (sp)+, a0 ! array base address
- lea 0(a0, d1.l), a0 ! address of array element
- jmp (a1)
- .align 2
|