QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2707|回复: 6

求助:一个ARM启动程序的初级问题

[复制链接]
发表于 2006-3-23 14:09:58 | 显示全部楼层 |阅读模式
请问CPSR, SP还有cpsr_cxsf等等现Rn一样,都是编译器认识的吗?因为我没见其它地方有定义过呀?
发表于 2006-3-24 09:08:51 | 显示全部楼层
这些寄存器在使用时并不用事先声明,除此以外的特殊功能寄存器都要事先宏定义好。当然你可以直接对地址操作。
回复

使用道具 举报

 楼主| 发表于 2006-3-24 11:47:31 | 显示全部楼层
谢谢!
还想再请教两个问题:
1. 如下程序段,问题在行后:
    MACRO
$HandlerLabel    HANDLER    $HandleLable;$符号有什么用?
$HandlerLabel             ;为什么要这个标号?
    sub          sp,sp,#4                  ;
    sub            sp,sp,#4            ;
    stmfd     sp!,{r0}            ;
    ldr            r0,=$HandleLabel    ;
    ldr            r0,[r0]                    ;
    str            r0,[sp,#4]            ;
    ldmfd   sp!,{r0,pc}            ;
    MEND
      另外,是否有这段以后,HandleLabel就是一个已经定义的宏了,是否就可以用了,因为初始化堆栈后面有这样一句:
 ldr            r0,=HandleIRQ   ;HandleIRQ除了在以下语句中以外,其它地方都没有:
HandlerFIQ        HANDLER   HandleFIQ  ;这样的语句是怎样引用宏的?
HandlerIRQ        HANDLER   HandleIRQ  ;

2. |Image$$RO$$Limit|是编译器里规定好的呢?还是在哪里定义过的,但我没找到。

不好意思,问题有点多,归纳起来就一个问题,很多符号找不到定义它的地方,这可能是初学者都头痛的问题。还有就是那几个HandleXXX和HandlerXXX,头都晕了。期待回音,谢谢!
回复

使用道具 举报

发表于 2006-3-24 18:46:53 | 显示全部楼层
MACRO、MEND
$标号  宏名  $参数1,$参数2,...
MEND
MACRO、MEND伪指令可以讲一段代码定义为一个整体,成为宏指令,其中,$标号在宏指令被展开时,标号会被替换为用户定义的符号,参数被相应的值替换。
我介绍你一本书,arm应用系统开发详解,李驹光编著的。这些上面都讲了。
还有,汇编语言并不要求你要会编,能看懂就好了,真正的大头儿开发使用c语言,汇编只是开始的bootloader要用,基本是这样,不要浪费太大精力在汇编上!
回复

使用道具 举报

 楼主| 发表于 2006-3-24 20:39:06 | 显示全部楼层
谢谢!我觉得你说得在理,我是在边用C,边仿真再边看bootloader,我个人认为那些个东西要真正能理解了后面的路才好走。也谢谢你推荐的书!
在此我也向像我一样初学者推荐一种方法,可以在仿真的过程中一条指令一条指令地看,对理解bootloader是很有作用的。
回复

使用道具 举报

发表于 2006-3-25 00:02:48 | 显示全部楼层
关于bootloader汇编指令的问题可以参考ADS带的手册ADS_AssemblerGuide_B.pdf
哪里汇编指令讲解的比较多
回复

使用道具 举报

 楼主| 发表于 2006-3-28 10:03:55 | 显示全部楼层
谢谢,我已下载了。在http://www.embed.com.cn/download/fy_upfile//ADS_CodeWarriorIDEGuide.rar可以下载,这个链接是相关下载页面。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-22 00:37 , Processed in 0.050687 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表