原创 ARM汇编的SWI指令软中断

2007-10-31 20:43 4563 0 分类: MCU/ 嵌入式

从下面的一个ARM 汇编小程序要弄懂的以下三个问题:


1).在ARM状态转到THUNB状态和BX的应用


2).汇编的架构


3).SWI指令的使用


    AREA ADDREG,CODE,READONLY


    ENTRY


MAIN


  ADR r0,ThunbProg 1 ;(为什么要加1呢?因为BX指令跳转到指定的地址执行程序 时, 若   (BX{cond} Rm)Rm的位[0]为1,则跳转时自动将CPSR中的标志T置位即把目标 代码解释为 Thunb代码)


    BX r0


   CODE16


ThunbProg


   mov r2,#2


    mov r3,#3


    add r2,r2,r3


    ADR r0,ARMProg


    BX ro


    CODE32


ARMProg


    mov r4,#4


    mov r5,#5


    add r4,r4,r5


stop mov r0,#0x18


LDR r1,=0x20026


SWI 0x123456


END


SWI--软中断指令:


SWI指令用于产生软中断,从拥护模式变换到管理模式,CPSR保存到管理模式的SPSR中.


 SWI{cond} immed_24 ;immed_24为软中断号(服务类型)


使用SWI指令时,通常使用以下两种方法进行传递参数,SWI 异常中断处理程序就可以提供相关的服务,这两种方法均是用户软件协定.SWI异常中断处理程序要通过读取引起软中断的SWI指令,以取得24位立即数.


(1) 指令中的24位立即数指定了用户请求的服务类型,参数通过通用寄存器传递.


 mov r0,#34 ;设置子功能号位34


SWI 12 ;调用12号软中断


(2) 指令中的24位立即数被忽略,用户请求的服务类型有寄存器RO的值决定,参数通过其他的通用寄存器传递.


 mov r0,#12 ;调用12号软中断


 mov r1,#34 ;设置子功能号位34


 SWI  0


在SWI异常中断处理程序中,取出SWI立即数的步骤为:首先确定引起软中断的SWI指令是ARM指令还是Thunb指令,这可通过对SPSR访问得到;然后取得该SWI指令的地址,这可通过访问LR寄存器得到;接着读出指令,分解出立即数.如如下程序:


T_bit EQU 0X20


SWI_Handler


STMFD SP!,{R0-R3,R12,LR} ;现场保护


MRS R0,SPSR ;读取SPSR


STMFD SP!,{R0} :保存SPSR


TST R0,#T_bit


LDRNEH R0,[LR,#-2] ;若是Thunb指令,读取指令码(16位)


   BICNE R0,#0XFF00 :取得Thunb指令的8位立即数


   LDREQ R0,[LR,#-4] ;若是ARM指令,读取指令码(32位)


   BICEQ R0,#0XFF000000 ;取得ARM指令的24位立即数


   ....


   LDMFD SP!,{R0-R3,R12,PC}^ ;SWI异常中断返回

广告

文章评论 0条评论)

登录后参与讨论
相关推荐阅读
embedtek 2007-10-31 22:31
UCOS-II移植ARM的读书笔记(12.11--12.25)
http://blog.csdn.net/zhhg_1220/ UCOS-II移植ARM的读书笔记(12.11) 真是很郁闷,昨天晚上边看移植代码边记下来的笔记不知道怎么回事在保存的时候竟然不见了。。...
embedtek 2007-10-31 20:30
uc/OS II移植中软件中断的理解与应用
uc/OS II移植中软件中断的理解与应用1.   软件中断SWISWI(software interrupt)软件中断,由用户定义的中断指令.可以用于用户模式下的程序调用特权操作指令.在实时操作系统...
embedtek 2007-10-31 20:29
Luminary Micro半导体-LM3S101微控制器(超低价格的ARM芯片)
概述  Luminary Micro StellarisTM系列的微控制器是首款基于ARM® CortexTM-M3的控制器,它将高性能的32位计算引入到对价格敏感的嵌入式微控制器应用中。这些堪称先锋...
embedtek 2007-10-31 19:49
ARM9微控制器LPC3180的软硬件平台设计
来源:网络 作者:不详 发布时间:2007-03-02   摘要 介绍以Philips LPC3180微控制器为核心的嵌入式软硬件平台设计;对系统设计的硬件部分和软件部分进行详细的分析,并针对LPC3...
embedtek 2007-10-31 19:47
AVR单片机的RTOS-AVRX应用
来源:网络 作者:不详 发布时间:2007-03-02 摘  要:详细介绍AVR系列单片机的专用实时嵌入式操作系统AVRX的特点,并以ATmega16单片机为平台,结合AVR单片机应用实例分析AVRX...
广告
我要评论
0
0
广告
关闭 热点推荐上一条 /3 下一条