Armasm: Literal pools?

Jan 15, 2005 1 Replies

Hi,



im using the armasm assembler, and i learnt what literal pools are while reading the ads assembler guide. i am using atmel`s pre-canned libraries for low level inits. i have seen that the cstartup file has code thats written in a particular way. u can see that at the end of the section, the symbols like "at91_default_fiq_handler" etc are stored nearby explicitly using DCD. we could also have used something like



ldr r0, =at91_default_fiq_handler

why is this being done? does it have something to do with a literal pool?


---------------------------------------------------------------------------


;- Advanced Interrupt Controller configuration


;---------------------------------------------------------------------------


;- Set up the default vectors



;---------------------------------------------------------------------------



;- Load the AIC Base Address and the default handler addresses


add r0, pc,#-(8+.-AicData) ; @ where to read values (relative)

ldmia r0, {r1-r4}


;- Setup the Spurious Vector


.. .. .. .. .. .. str r4, [r1, #AIC_SPU] ; r4 =spurious handler


;---------------------------------------------------------------------------


;- Default Interrupt Handler


;---------------------------------------------------------------------------


AicData



DCD AT91C_BASE_AIC; AIC Base Address



IMPORT at91_default_fiq_handler



IMPORT at91_default_irq_handler



IMPORT at91_spurious_handler


PtDefaultHandler


DCD at91_default_fiq_handler



DCD at91_default_irq_handler



DCD at91_spurious_handler EndInitAic



Thanx in anticipation



Mayank



or is the aim to speed up execution by using sequential memory accesses?

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required