wonderwang
驱动牛犊
驱动牛犊
  • 注册日期2002-10-29
  • 最后登录2004-07-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1428回复:5

求助:ARM汇编

楼主#
更多 发布于:2003-02-25 22:11
哪位大侠能解释一下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
I wonder everything.
wonderwang
驱动牛犊
驱动牛犊
  • 注册日期2002-10-29
  • 最后登录2004-07-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于: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]
I wonder everything.
飞天猩猩
驱动巨牛
驱动巨牛
  • 注册日期2001-09-24
  • 最后登录2008-06-17
  • 粉丝0
  • 关注0
  • 积分201分
  • 威望22点
  • 贡献值0点
  • 好评度21点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-02-27 22:52
说出来让偶也知道一下。
wonderwang
驱动牛犊
驱动牛犊
  • 注册日期2002-10-29
  • 最后登录2004-07-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-02-28 14:26
DCB DCD用于定义内存变量
^后边跟的是当前的基地址,通常与#配合使用
I wonder everything.
thilo
驱动牛犊
驱动牛犊
  • 注册日期2002-05-19
  • 最后登录2005-06-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于: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

wonderwang
驱动牛犊
驱动牛犊
  • 注册日期2002-10-29
  • 最后登录2004-07-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-03-04 16:22
谢谢啦!
I wonder everything.
游客

返回顶部