阅读:1542回复:5
求助:ARM汇编
哪位大侠能解释一下ARM汇编中这几个符号的意思
DCD DCB | $$ % ^ # 有没有介绍这些符号的参考消息啊? DCD 0x0f0f0f0f DCB 0x0d,0x20,0x3e,0x3e IMPORT |$$C$$fpmap| IMPORT |$$C$$debug| % USR_STACK_SIZE USR_STACK % UDF_STACK_SIZE UDF_STACK ^ 0x1400000 DmaCodeArea # 4 ^ 0x1700000 UserFreeArea # 4 |
|
|
沙发#
发布于:2003-03-04 16:22
谢谢啦!
|
|
|
板凳#
发布于:2003-03-03 12:49
IMPORT |$$C$$fpmap|之类的语句一般用于: 输入(import)外部(一般是ARM Project manager(APM))对某个参数的定义。
你的两个IMPORT语句中的参数我不知道他的作用,但“C$$fpmap”与Stack backtracing有关。 我给个例吧: 我在APM的Linker Configuration中的Entry and Base页的Read-Write设置为:0x10000040.这个值实际就是在后面汇编程序中的Image$$RW$$Base。在我这段程序的最后,可以得到r1的值为0x10000040。 IMPORT |Image$$RO$$Limit| ; End of ROM code (=start of ROM data) IMPORT |Image$$RW$$Base| ; Base of RAM to initialise IMPORT |Image$$RW$$Limit| ; End of RAM to initialise IMPORT |Image$$ZI$$Base| ; Base and limit of area IMPORT |Image$$ZI$$Limit| ; to zero initialise IMPORT |CFG| IMPORT |ISP| [ :DEF:THUMB CODE32 ] AREA |_INIT|, CODE, READONLY EXPORT __main __main ENTRY ; Entry point IF :DEF: ROM_AT_ADDRESS_ZERO ; Locate ROM address 0 b Reset_Handler b Undefined_Handler b SWI_Handler b Prefetch_Handler b Abort_Handler nop ; Reserved vector b IRQ_Handler b FIQ_Handler ELSE ; Not 0 mov r8, #0 adr r9, Vector_Init_Block ldmia r9!,{r0-r7} stmia r8!,{r0-r7} ldmia r9!,{r0-r7} stmia r8!,{r0-r7} ENDIF Reset_Handler ; The RESET entry point mov r0, #Mode_SVC:OR:I_Bit:OR:F_Bit msr cpsr_c,r0 ; --- Initialise memory required by C code ldr r0, =|Image$$RO$$Limit| ; Get pointer to ROM data ldr r1, =|Image$$RW$$Base| ; and RAM copy ldr r3, =|Image$$ZI$$Base| ; Zero init base => top of initialised data cmp r0, r1 |
|
地板#
发布于:2003-02-28 14:26
DCB DCD用于定义内存变量
^后边跟的是当前的基地址,通常与#配合使用 |
|
|
地下室#
发布于:2003-02-27 22:52
说出来让偶也知道一下。
|
|
5楼#
发布于:2003-02-26 11:41
有些符号已经明白了,但是$$符号的使用还是不明白
$$符号到底有什么含义,根据注释能够猜测出整个大致的含义, 但是这个符号在哪里定义的还是不知道,请大侠门出手相救! IMPORT |Image$$RO$$Limit| ; End of ROM code (=start of ROM data) IMPORT |Image$$RW$$Base| ; Base of RAM to initialise IMPORT |Image$$ZI$$Base| ; Base and limit of area IMPORT |Image$$ZI$$Limit| ; to zero initialise LDR r0, =|Image$$RO$$Limit| ; Get pointer to ROM data LDR r1, =|Image$$RW$$Base| ; and RAM copy LDR r3, =|Image$$ZI$$Base| ; Zero init base => top of initialised data [编辑 - 2/28/03 by wonderwang] |
|
|