您的位置 首页 产品

ARM开发总结的小常识

ARM开发总结的小知识字节8位半字16位字32位Code,RO-dataRW-data,ZI-dataCode为程序代码部分RO-data表示程序定义的常量const

ARM开发总结小常识
字节 8位
半字 16位
32位

Code, RO-data
RW-data,ZI-data

Code为程序代码部分
RO-data 表明 程序界说的常量 const temp;
RW-data 表明 已初始化的全局变量
ZI-data 表明 未初始化的全局变量

Program Size: Code=”18248″ RO-data=320 RW-data=260 ZI-data=3952

Code, RO-data,RW-data …………..flash
RW-data, ZIdata……………….RAM

初始化时RW-data从flash拷贝到RAM

生成的map文件坐落list文件夹下 (KEIL)

Total ROSize (Code + RO Data)18568 (18.13kB)
Total RWSize (RW Data + ZI Data)4212 ( 4.11kB)
Total ROM Size (Code + RO Data + RW Data)18828 (18.39kB)

ARM指令的长度刚好是1个字(分配为占用4个字节),Thumb指令的长度刚好是半字(占用2个字节)

R0-R15 (R15-PC,R14-LR,R13-SP) 32位

每个反常方式还带有一个程序状况保存寄存器 (SPSR),它用于保存在反常事情产生之前的CPSR

LDMIA R1!,{R2-R7, R12} ;将R1单兀中的数据读出到R2-R7,R12,R1主动加1
STMIA RO!,{R3-R6,R10};将R3-R6,R10中的数据保存到RO指向的地址,RO主动加1

在数据传送之前,将偏移量加到Rn中,其成果作为传送数据的存储地址.若运用后缀“!”,则成果写回到Rn中,且Rn值不允许为R15.指令举例如下:
LDR Rd, [Rn, #Ox4]!

LDMFDSP!,{R0-R3,PC}^ ;间断回来
“^”符号表明这是一条特别方式的指令。这条指令在从存储器中装载PC的一起(PC是最终康复的),CPSR也得到康复

大端格局(Big-endian)
小端格局(Little-endian)

数据0x12345678存储格局
大端格局
低地址<----0x12|0x34|0x56|0x78---->高地址
小端格局
低地址<----0x78|0x56|0x34|0x12---->高地址

ARM微处理器支撑7种运转方式,分别为: CPSR M[4:0]

用户方式(usr):ARM处理器正常的程序履行状况。 10000
快速间断方式(fiq):用于高速数据传输或通道处理。 10001
外部间断方式(irq):用于通用的间断处理。 10010
管理方式(svc):操作体系运用的保护方式。10011
数据拜访停止方式(abt):当数据或指令预取停止时进入该方式,可用于虚拟存储及存储保护。10111
体系方式(sys):运转具有特权的操作体系使命。 11111
界说指令间断方式(und):当未界说的指令履行时进入该方式,可用于支撑硬件协处理器的软件仿真。 11011

ARM正常作业一般作业在用户方式和体系方式,复位的时分进入管理方式

关于ARM指令集来说,PC指向当时指令的下两条指令的地址

留意pc,在调试的时分显现的是当时指令地址,而用mov lr,pc的时分lr保存的是此指令向后数两条指令的地址

假定反汇编代码:0x000001 :mov lr pc

(此刻检查PC寄存器的值是0x000001,但实践PC值是0x000003, lr里边保存的便是0x000003)

fields 指定传送的区域(psrCPSR或SPSR)
c 操控域屏蔽字节(psr[7..0])
x 扩展域屏蔽字节(psr[15..8])
s 状况域屏蔽字节(psr[23..16])
f 标志域屏蔽字节(psr[31..24])

例如:MSR cpsr_c, #0xD3 ;CPSR[7…0] = 0xD3

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/xinpin/chanpin/259684.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部