打印

关于启动代码跳到c入口的疑问

[复制链接]
1672|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
huntsmen|  楼主 | 2008-3-31 13:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我按照网上一个教程写简单的跳转到c入口的启动文件,
    AREA    INIT,CODE,READONLY
    CODE32

ARM_MODE_USER           EQU     0x10
ARM_MODE_FIQ            EQU     0x11
ARM_MODE_IRQ            EQU     0x12
ARM_MODE_SVC            EQU     0x13
ARM_MODE_ABORT          EQU     0x17
ARM_MODE_UNDEF          EQU     0x1B
ARM_MODE_SYS            EQU     0x1F

I_BIT                   EQU     0x80
F_BIT                   EQU     0x40
T_BIT                   EQU     0x20

USR_Stack     EQU    0x00203000

    ENTRY
    
        B     InitReset       ; 0x00 Reset handler 
undefvec             B       undefvec        ; 0x04 Undefined 
swivec         B      swivec          ; 0x08 Software Interrupt 
pabtvec        B    pabtvec         ; 0x0C Prefetch Abort 
dabtvec        B    dabtvec         ; 0x10 Data Abort 
rsvdvec        B    rsvdvec         ; 0x14 reserved 
irqvec        B   irqvec          ; 0x18 IRQ 
fiqvec            B   fiqvec           ; 0x1c FIQ 

InitReset 

    MSR CPSR_c,#ARM_MODE_SVC| I_BIT | F_BIT ;改成用户模式且禁止IRQ和FIQ中断 
    LDR SP,=USR_Stack 
    
;这一块跳到c入口,我有很多疑问        
    ;跳到c的代码我在下面给出

stop    B stop                                  

    END 

跳到c代码
我在网上看的都是
IMPORT main
B main
我试了一下,确实能进入c的main,但是执行完成返回到汇编后,最终停在一条swi语句,很纳闷
而且在axd中根本看不到自己的源码,反汇编代码也很怪异

只有这样写才可以
    EXPORT __main
__main
    IMPORT main
    B  main
为什么加了这么一个标示就好了

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

14

帖子

0

粉丝