ARM汇编
静能生悟
静生智,定生慧,一勤天下无难事,俭以养德,厚德载物!!
展开
-
ARM逻辑运算指令
1、AND(按位与)同时为真(1)结果为真,其它为假。MOV R0,#0x02 ;R0=0X2AND R0,R0,#0x01 ;R0=R0&0x01=0000 0010 & 0000 0001= 0MOV R1,#0x07 ;R1=0X7MOV R3,#0x05 ;R3=0X5AND...原创 2018-09-24 23:00:56 · 5921 阅读 · 0 评论 -
第2章ARM技术与ARM体系结构—内部寄存器
ARM处理器共有37个寄存器,这些寄存器包括以下两类寄存器。31个通用寄存器:包括程序计数器PC等,这些寄存器都是32位寄存器。6个状态寄存器:状态寄存器也是32位的寄存器,但目前只使用了其中的14位。一、通用寄存器及其分布在ARM处理器的7种模式下,每种工作模式都有一组与之对应的寄存器组。在任意时刻,可见的寄存器组包括15个通用的寄存器R0~R14、一个或两个状态寄存器和PC(程...原创 2019-09-11 18:19:33 · 684 阅读 · 0 评论 -
第2章ARM技术与ARM体系结构—ARM异常处理
异常通常定义为:处理器需要中止指令正常执行的任何情形并转向相应的处理,包括ARM内核产生复位,取指或存储器访问失败,遇到未定义指令,执行软中断指令,或者出现外部中断等。大多数异常都对应一个软件的异常处理程序,也就是在异常发生时执行的软件程序。一、异常入口ARM处理器的异常分为数据中止、快速中断请求、普通中断请求、预取指中止、软件中断、复位以及未定义指令共7种异常,如表2-4所示。异常处理主...原创 2019-09-11 22:56:44 · 409 阅读 · 0 评论 -
第2章ARM技术与ARM体系结构—存储方式与存储器映射机制
ARM处理器地址空间大小为4GB(2^32=4294967296),这些字节的单元地址是一个无符号的32位整数值,其取值范围为0~2^32-1。各存储单元地址作为32位无符号数,可以进行常规的整数运算。当程序正常执行时,每执行一条ARM指令,当前指令计数器加4个字节;每执行一条Thumb指令,当前指令计数器加2个字节。ARM处理器对存储器操作的数据单元包括字节(8bit)的存取、半字(...原创 2019-09-14 22:34:05 · 865 阅读 · 0 评论 -
第2章ARM技术与ARM体系结构—ARM流水线技术分析
一、ARM7流水线技术ARM7处理器使用流水线来增加处理器指令流的处理速度,这样可使几个操作同时进行,并使处理器与存储系统之间的操作更加高效,能够达到0.9MIPS/MHz的指令执行速度。PC代表程序计数器,流水线使用三个阶段,因此指令分为三个阶段执行:1、取指(从存储器装载一条指令)。2、译码(识别将要被执行的命令)。3、执行(处理指令并将结果写回寄存器)。...原创 2019-09-15 12:01:43 · 780 阅读 · 0 评论 -
第3章 ARM指令集寻址方式—ARM指令的编码格式
ARM指令寻址方式可分为四大类:数据处理指令寻址、Load/Store指令的寻址、批量Load/Store指令的寻址和协处理指令寻址。一、ARM指令的编码格式1、一般编码格式每条ARM指令占有4个字节,其指令长度为32位。典型的ARM指令编码格式如下。其中:1)cond(bit[31:28]):指令执行的条件码。2)type(bit[27:26]):指令类型码,根据其编...原创 2019-09-21 22:03:28 · 1402 阅读 · 1 评论 -
ARM如何判断合法的立即数
立即数的定义:每个立即数由一个8位的常数进行32位循环右移偶数位得到,其中循环右移的位数由一个4位二进制的两倍表示。即<immediate>=immed_8进行32位循环右移(2*rotate_4)位这样并不是每一个32位的常数都是合法的立即数,只有能够通过上述构造方法得到的才是合法的立即数,下面的常数是合法的立即数:0Xff,0X104而下面的常数不是合法的立即数...原创 2019-09-21 23:01:31 · 1172 阅读 · 0 评论 -
第3章 ARM指令集寻址方式—数据处理指令寻址方式
一、数据处理指令寻址方式1、数据处理指令第二操作数的构成方式数据处理指令第二操作数operand2的构成有三种格式:1)立即数方式每个立即数由一个8位的常数进行32位循环右移偶数位得到,其中循环右移的位数由一个4位二进制的两倍表示。即<immediate>=immed_8进行32位循环右移(2*rotate_4)位规则:当立即数值在0~0xff范围时,令imme...原创 2019-09-22 15:38:34 · 778 阅读 · 0 评论 -
第3章 ARM指令集寻址方式—Load/Store指令寻址(一)
Load/Store指令是对内存进行存储/加载数据操作的指令,根据访问的数据格式的不同,将这类指令的寻址分为字、无符号字节的Load/Store指令寻址和半字、有符号字节Load/Store指令寻址两大类。一、地址计算方法1、寄存器间接寻址寄存器间接寻址就是以寄存器中的值作为操作数的地址,而操作数本身存放在存储器中。例如以下指令:LDR R0, [R1] ...原创 2019-10-05 15:57:01 · 1162 阅读 · 0 评论 -
第3章 ARM指令集寻址方式—Load/Store指令寻址(二)
三、半字、有符号字节寻址这类指令可用来加载有符号字节、加载有符号半字、加载/存储无符号半字。一般称这类指令为“杂类的Load/Store指令”。Load/Store指令对半字、有符号字节操作指令编码格式如下:汇编指令汇编语法格式如下:加载有符号字节到寄存器:LDR {<cond>}SB <Rd>, <addressing_mode>加载有...原创 2019-10-05 21:21:07 · 540 阅读 · 0 评论 -
第3章 ARM指令集寻址方式—批量Load/Store指令寻址方式
ARM指令系统提供了批量Load/Store指令寻址方式,即多寄存器寻址,也就是一次可以传送几个寄存器的值,允许一条指令最多传送16个寄存器。一、编码格式批量Load/Store指令汇编语法格式如下:批量加载:LDM {<cond>} <addr_mode> <Rn> {!}, <regs> {^}从一片连续的内存单元读取数据到各...原创 2019-10-07 14:31:22 · 635 阅读 · 0 评论 -
字节,半字,字,双字
1个二进制位称为1个bit,8个二进制位称为1个Byte,也就是1个字节(8位)。不同的CPU一次可以处理的数据位数不同,32位CPU可以一次处理32位数据,64位CPU可以一次处理64位数据,这里的位,指的就是字长。而所谓的字长,我们有时会称为字(word)。在16位的CPU中,一个字刚好为两个字节,而32位CPU中,一个字是四个字节。若以字为单位,向上还有双字(两个字),四字(四个字)。...原创 2019-09-10 22:30:19 · 2565 阅读 · 0 评论 -
ARM NEON简单介绍
https://www.cnblogs.com/mfrbuaa/p/4009360.html“ARM Advanced SIMD”,nick-named “NEON”, it provides:(1)、A set of interesting scalar/vectorinstructions and registers(the latter are mapped to the same ch...转载 2019-09-10 13:52:37 · 1910 阅读 · 0 评论 -
第2章ARM技术与ARM体系结构—ARM处理器的工作模式
ARM技术的设计者将ARM处理器在应用中可能产生的状态进行分类,并针对同一类型的异常状态设定了一个固定的入口点,当异常产生时,程序会自动跳转到对应异常入口处进行异常服务。ARM处理器共有7种工作模式。1、用户模式非特权模式,也就是正常程序执行的模式,大部分任务在这种模式下执行。在用户模式下,如果没有异常发生,不允许应用程序自行改变处理器的工作模式,如果有异常发生,处理器会自动切换工作模式。...原创 2019-09-08 21:00:48 · 424 阅读 · 0 评论 -
ARM汇编练习
1. 写一条 ARM 指令,分别完成下列操作: a) r0 = 16 b) r0 = r1 / 16 (带符号的数字) c) r1 = r2 * 3 d) r0 = -r0a:MOV R0,#16b:MOV R0,R1,ASR #4说明:乘法是左移(左移1位是乘2) 除法是右移(右移1位是除2)c:ADD R1,R2,R2,LSL #2 ...原创 2018-09-25 23:14:23 · 5762 阅读 · 4 评论 -
ARM堆栈寻址
堆栈的分类:生长方向:1.向上生长:压栈的时候SP指针指向内存的高地址2.向下生长:压栈的时候SP指针指向内存的低地址(ATPCS:ARM)满和空:1.满堆栈:压栈先修改堆栈指针SP,然后在存数据2.空堆栈:压栈先存数据,然后修改堆栈指针SP四种堆栈类型:1.FA 递增满2.FD 递减满(ARM 采用的)3.EA 递增空4.ED 递减空压栈指令: STM/...原创 2018-10-18 23:19:34 · 1524 阅读 · 0 评论 -
ARM寻址方式
1、ARM处理器根据指令中给出的地址信息来寻找物理地址的几种方式:立即寻址,寄存器寻址,寄存器间接寻址,基址变址寻址,多寄存器寻址,相对寻址,堆栈寻址 。2、案例分析AREA Example,CODE,READONLY ;声明代码段Example ENTRY ;标识程序入口 CODE32 ;声明32位ARM指令START MOV SP,#0x300000...原创 2018-10-18 23:23:53 · 426 阅读 · 0 评论 -
C语言与汇编语言混合编程时遵循规则
在C程序和ARM汇编程序之间相互调用时必须遵守ATPCS规则。ATPCS规定了一些子程序间调用的基本规则,比如:1、寄存器的使用规则子程序之间通过寄存器r0~r3来传递参数,当参数个数多于4个时,使用堆栈来传递参数。在子程序中,使用寄存器r4~r11保存局部变量。寄存器r13用作堆栈指针,记作SP。寄存器r14称为链接寄存器,记作LR。该寄存器用于保存子程序的返回地址。寄存器r15...原创 2018-10-23 14:56:39 · 4061 阅读 · 0 评论 -
第一章 绪论—嵌入式系统定义
主要介绍嵌入式系统的发展历史和相关概念,当前嵌入式技术的主要应用及市场上最流行的嵌入式产品,通过典型产品实例让读者了解当前嵌入式技术的应用状况和研究方向。最后介绍嵌入式技术未来的发展趋势。一、嵌入式系统定义近年来,以集成电路为代表的微电子技术取得重大突破,这使计算机技术、微控制器技术得到快速发展,再加上网络技术的应用与普及,加速了21世纪工业生产、军工国防、消费电子、商业活动、科学实验和家...原创 2019-08-31 22:18:10 · 530 阅读 · 0 评论 -
第一章 绪论—嵌入式操作系统
嵌入式操作系统产生于20世纪80年代,当时国际上一些IT公司开始进行商用嵌入式操作系统和专用操作系统的设计与开发。到目前为止,已出现很多嵌入式操作系统,在嵌入式产品开发中发挥着重要作用。一、嵌入式实时操作系统嵌入式实时操作系统指在限定的时间内对输入进行快速处理并作出响应的嵌入式操作系统。实时操作系统具有实时性,必须有相应的硬件支持才能达到实时控制的目的。在嵌入式操作系统中,首先要保证实时性...原创 2019-09-01 13:23:02 · 328 阅读 · 0 评论 -
第一章 绪论—嵌入式技术在工程领域的应用
嵌入式系统在工业控制、军事国防、消费电子、网络技术等诸多领域有广泛的应用,如图1-3所示。一、工业控制领域工业控制领域包括工控设备、智能仪表和汽车电子。工业控制网络由传感器、执行机构、显示器和存储设备等组成,用于监视和控制电气设备系统。在工业应用中,控制网络用于监视设备的状态、调节转速和流量等、采集模拟输入量、顺序开关/起停设备、与主控制机通信并显示设备上显示各个参量的大小和状态。由于...原创 2019-09-01 20:29:01 · 489 阅读 · 0 评论 -
第一章 绪论—嵌入式技术发展趋势
有人说当前我们正处于信息时代和数字时代,虽然这两个时代没有严格的定义,但肯定是我们正在向这两个时代发展。时代的发展使得嵌入式产品获得巨大的商机,为嵌入式产品提供广阔的市场前景,也对嵌入式生产厂商提出新的挑战,从中可以看出未来嵌入式系统的发展趋势。1、随着信息化与数字化的发展,嵌入式设备进行互联网络(物联网)是未来发展的趋势。未来的嵌入式设备为了适应信息化与数字化的发展,网络化成为发展的方向...原创 2019-09-01 21:28:13 · 327 阅读 · 0 评论 -
第2章ARM技术与ARM体系结构—ARM体系结构版本与内核
目前嵌入式处理器以32位为主,在32位微处理器中又以ARM为核心,因此以ARM为核心搭建嵌入式开发平台,基于此平台介绍嵌入式开发技术。主要介绍ARM处理器的产生及版本发展历史以及各个版本的典型处理器及应用情况和性能分析、ARM处理器的内核调试结构,ARM处理器的工作模式及寄存器组织结构(分析在什么情况下进入相应的工作模式),ARM处理器支持的内存数据存储方式(分为大端格式和小端格式),介绍AR...原创 2019-09-06 23:08:36 · 923 阅读 · 0 评论 -
第2章ARM技术与ARM体系结构—ARM内核模块
ARM处理器一般都带有嵌入式追踪宏单元ETM(Embedded Trace Macro),ETM是ARM公司自己推出的调试工具,如图2-1所示。ARM处理器都支持基于JTAG(Joint Test Action Group,联合测试行动小组)的调试方法。它利用芯片内部的嵌入式ICE来控制ARM内核操作,可完成单步调试和断点调试等操作。当CPU处理单步执行完毕或到达断点处时,就可以在宿主机端...原创 2019-09-08 17:28:54 · 774 阅读 · 0 评论 -
第3章 ARM指令集寻址方式—协处理器指令寻址方式
ARM支持协处理器操作,其操作要通过协处理器命令来实现,下面讨论协处理器指令具体的寻址方式。一、协处理器加载/存储指令的寻址方式协处理器加载/存储指令可以用来实现ARM处理器与协处理器之间的数据传输。其汇编语法格式如下:<opcode>{<cond>}{L} <coproc>,<CRd>,<addressing_mode>...原创 2019-10-07 16:35:00 · 436 阅读 · 0 评论