-
Thumb汇编指令练习
前面2个都是ARM汇编指令,这个是Thumb,最大的区别就是一个是32位的,一个是16位的,Thumb状态下的寄存器集的子集这个还是慢慢在领会和ARM汇编之间的区别吧,在编写Thumb指令时,先要使用伪指令CODE16声明,而且,在ARM指令中要使用BX指令跳转到Thumb指令,以切换处理器状态。编写ARM指令时,则可使用伪指令CODE32声明。
先看程序:
;第一段 AREA EXAMPLE3,CODE,READONLY ENTRY MAIN ADR R0,THUMBPROG+1; |
这里为啥要加1呢,主要是因为: |
n(1)当操作数寄存器的状态位(位[0])为1时,执行BX指令进入Thumb状态。如果处理器在Thumb状态进入异常,则当异常处理(IRQ、FIQ、Undef、Abort和SWI)返回时,自动转换到Thumb状态。
n(2)当操作数寄存器的状态位(位[0])为0时,执行BX指令进入ARM状态,处理器进行异常处理(IRQ、FIQ、Reset、Undef、Abort和SWI)。在此情况下,把PC放入异常模式链接寄存器中。从异常向量地址开始执行也可以进入ARM状态。
BX R0 ;跳转到THUMBPROG,并且程序切换到Thumb状态 ;第二段 CODE16 ;指示下面为Thumb指令 THUMBPROG MOV R2,#2 MOV R3,#3 ADD R2,R2,R3 |
;切换到ARM汇编指令 ADR R0,ARMPROG BX R0 ;跳转到ARMPROG,并且程序切换到ARM状态 ;第三段 CODE32 ;指示下面为Arm指令 ARMPROG MOV R4,#4 MOV R5,#5 ADD R4,R4,R5 ;第四段 STOP MOV R0,#0X18 LDR R1,=0X20026 SWI 0X123456 ;通过SWI功能调用,报告程序结束 END |
又学会一条新指令,
LDR R1,=0X20026;这个就是将立即数0x20026存入到寄存器R1中。
SWI 0X123456 ;通过SWI功能调用,报告程序结束
上面这条指令到时还没找到说明之处。只说这个是软件中断指令,
然后对应着这个软件中断有个中断向量表,入口地址是0x08,
0x08 b HandlerSWI
跳转到HandlerSWI这个函数入口地址,这中间有个功能号传递的,这个功能号就是在进入了软件中断的服务函数里面选择对应于功能号的选项功能。
这个暂时先这样把,如果高手看到我发的贴,那请解答,谢谢,非常感谢!
原文:https://www.cnblogs.com/tao560532/archive/2011/12/06/2277620.html
最新更新
Objective-C语法之代码块(block)的使用
VB.NET eBook
Add-in and Automation Development In VB.NET 2003 (F
Add-in and Automation Development In VB.NET 2003 (8
Add-in and Automation Development in VB.NET 2003 (6
Add-in and Automation Development In VB.NET 2003 (5
AddIn Automation Development In VB.NET 2003 (4)
AddIn And Automation Development In VB.NET 2003 (2)
Addin and Automation Development In VB.NET 2003 (3)
AddIn And Automation Development In VB.NET 2003 (1)
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
SQL Server -- 解决存储过程传入参数作为s
武装你的WEBAPI-OData入门
武装你的WEBAPI-OData便捷查询
武装你的WEBAPI-OData分页查询
武装你的WEBAPI-OData资源更新Delta
5. 武装你的WEBAPI-OData使用Endpoint 05-09
武装你的WEBAPI-OData之API版本管理
武装你的WEBAPI-OData常见问题
武装你的WEBAPI-OData聚合查询
OData WebAPI实践-OData与EDM
OData WebAPI实践-Non-EDM模式