ARM开发总结的小知识 Code,RO-data,RW-data,ZI-

2020-02-12来源: eefocus关键字:ARM  开发总结  Code  RO-data  RW-data  ZI-

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 RO  Size (Code + RO Data)                18568 (  18.13kB)
    Total RW  Size (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]!

LDMFD  SP!,{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 指定传送的区域(psr  CPSR或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

关键字:ARM  开发总结  Code  RO-data  RW-data  ZI- 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic487955.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:ARM 启动过程
下一篇:嵌入式Linux之我行——ARM MMU工作原理剖析

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

海思ARM平台交叉编译zeroMQ
在使用海思的项目中要使用到ZeroMQ这个消息队列框架,之前在PC端使用感觉不错。所以通过要通过交叉编译,将其移植到ARM平台。移植方法,可以参考 https://blog.csdn.net/sishuihuahua/article/details/77203094  以下是我使用海思交叉编译工具的方法:一、配置编译器./configure --host=arm-himix100-linux --prefix=/opt/hisi-linux/zeromq-4.1.6/arm-zeromq  --without-libsodiumarm-himix100-linux   --host
发表于 2020-02-08
ARM常用汇编指令列表
发表于 2020-02-07
ARM常用汇编指令列表
ARM 处理器寻址方式之间接寻址的几种表达
我们以 LDR 指令为例来分别举例分析。LDR 指令的格式为:LDR{条件} 目的寄存器,<存储器地址>LDR 指令是字加载指令,用于从存储器中将一个 32 位的字数据送到目的寄存器中。该指令通常用于从存储器中读取 32 位的字数据到通用寄存器,然后对数据进行处理。当程序计数器 PC 作为目的寄存器时,指令从存储器中读取的字数据被当作目的地址,从而可以实现程序流程的跳转。指令示例:LDR R3, [R4]             ; 将存储器地址为 R4 的字数据读入寄存器 R3LDR R3, [R1, #8]     
发表于 2020-02-07
ARM 汇编指令 DCD
简介DCD:数据定义( Data Definition )伪指令一般用于为特定的数据分配存储单元,同时可完成已分配存储单元的初始化。语法格式:标号 DCD(或 DCDU) 表达式DCD(或 DCDU)伪指令用于分配一片连续的字存储单元并用指定的表达式初始化。其中表达式可以为程序标号或数字表达式。 DCD 也可用 “ &” 代替。用 DCD 分配的字存储单元是字对齐的,而用 DCDU 分配的字存储单元并不严格字对齐。实例(STM32 启动文件):__Vectors       DCD     __initial_sp     
发表于 2020-02-07
ARM 汇编指令 ADR 与 LDR 使用
简介这两个都是伪指令:ADR 是小范围的地址读取伪指令,LDR 是大范围的读取地址伪指令。可实际使用的区别是: ADR 是将基于 PC 相对偏移的地址值或基于寄存器相对地址值读取的伪指令,而 LDR 用于加载 32 位立即数或一个地址到指定的寄存器中。以下面的汇编代码为例:.global _start_start:    ldr r0, loop    adr r0, loop    ldr r0, =looploop:    nop用以下命令完成汇编、链接操作,并输出反汇编文件[root@localhost asm]# arm
发表于 2020-02-07
arm架构64位(AArch64)汇编优化总结
1、参考https://blog.csdn.net/SoaringLee_fighting/article/details/81906495https://blog.csdn.net/SoaringLee_fighting/article/details/82155608https://blog.csdn.net/u011514906/article/details/38142177https://blog.csdn.net/listener51/article/details/825304642、前言本文是arm架构64位(AArch64执行状态) neon优化的总结文档,主要包括arm架构64位优化的基础知识,特殊用法,打印
发表于 2020-02-07
arm架构64位(AArch64)汇编优化总结
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved