ARM汇编
丶一个有梦想的老实人
if have a day...
展开
-
1.2.指令集对CPU的意义
汇编语言与C等高级语言的差异:1. 汇编难写,C好写。2. 汇编无可移植性,C语言有一定的可移植性,Java等更高级的语言移植性更高。3. 汇编语言效率最高,C语言次之,Java等更高级语言效率更低。4. 汇编不适合完成大型复杂的项目,更高级语言更适合完成更大,更复杂的项目。汇编语言的本质:1. 汇编的实质是机器指令(机器码)的助记符,是一种低级符号语言。2.原创 2017-07-29 14:56:32 · 584 阅读 · 0 评论 -
1.12.ARM的异常处理方式简单介绍
什么是异常?* 正常工作之外的流程都是异常。* 异常会打断正在执行的工作,正常我们希望异常处理完成后继续回来执行我们原来的工作。* 中断也是异常的一种。异常向量表:* 所有的CPU都有异常向量表,这是CPU设计时就设定好的,由硬件决定。* 当异常发生时,CPU会自动动作(PC会跳转到异常向量处处理异常,有时会伴有一些辅助动作)。* 异常向量表是硬件向软件提供的处原创 2017-08-03 18:48:07 · 376 阅读 · 0 评论 -
1.16.ARM汇编指令4之比较指令
ARM比较指令:CMP & CMN & TST & TEQ* CMP比较指令,指令使用Rn的值减去operand2的值,根据操作的结果更新CPSR寄存器相应的条件标志位,以便后面的指令根据相应的条件标志位来判断是否执行。指令格式:CMP{cond} Rn,operand2eg:CMP r1,#10 ; r1与10比较,设置相关标志位CMP r1,r2原创 2017-08-04 19:23:35 · 8841 阅读 · 1 评论 -
1.15.ARM汇编指令3之逻辑指令
ARM汇编指令之逻辑指令:and & orr & eor & bic* and逻辑与操作指令,将operand2的值与寄存器Rn的值按位逻辑与操作,结果保存到Rd中。指令格式:and{cond}{S} Rd,Rn,operand2eg:ands r0,r0,#0x01 ; r0=r0&0x01 取出最低位数据and r2,r1,r3 ; r原创 2017-08-04 17:06:25 · 2933 阅读 · 0 评论 -
1.13 ARM汇编指令集1之预备知识
指令和伪指令:* (汇编)指令是CPU机器指令的助记符,经过编译后会得到一串1/0组成的机器码,可以由CPU读取执行。* (汇编)伪指令本质上不是指令(只是和指令一起写在代码中),它是编译器环境提供的,目的是用来指导编译过程,经过编译后伪指令最终不会生成机器码。两种不同风格的ARM指令:* ARM官方的ARM汇编风格:指令一般用大写字母,Windows中IDE开发环境常用(原创 2017-08-04 09:49:22 · 405 阅读 · 0 评论 -
1.14.ARM汇编指令集2数据传输和算术指令详解
常用的ARM指令1:数据处理指令* 数据传输指令:mov & mvn - mov(片内)原创 2017-08-04 15:30:53 · 2602 阅读 · 0 评论 -
1.17.ARM汇编指令集5之乘法指令
ARM汇编指令集之乘法指令:MUL & MLA & UMULL & UMLAL & SMULL & SMLAL* MUL32位乘法指令,指令将Rm和Rs中的值相乘,结果的低32位保存到Rd中。指令格式:MUL{cond}{S} Rd,Rm,Rseg:mul r1,r2,r3 ; r1=r2*r3muls r0,r3,r7 ; r0=r3*原创 2017-08-04 19:44:23 · 3982 阅读 · 0 评论 -
1.18.ARM汇编指令集6之跳转指令
ARM汇编指令之跳转指令:B & BL & BX在ARM中有两种方式可以实现程序的跳转,一种是使用跳转指令直接跳转,另一种则是直接向PC寄存器赋值实现跳转。跳转指令有跳转指令B,带链接的跳转指令BL,带状态切换的跳转指令BX。* B跳转指令,跳转到指定的地址执行程序。指令格式:B{cond} labeleg:b waita ; 跳转到wait原创 2017-08-05 14:14:03 · 3219 阅读 · 0 评论 -
1.19.ARM汇编指令集7之存储器访问指令(LDR和STR)
ARM汇编指令集的存储器访问指令: LDR & STR & LDM & STM & SWP这里先总的介绍一下存储器访问指令,然后再详解说前两个(LDR&STR)ARM存储器访问指令:ARM处理器是加载/存储体系结构的典型的RISC处理器,对存储器的访问只能使用加载和存储指令实现。ARM的加载/存储指令可以实现字、半字、有符号和无符号数字节的操作。批量加载/存储指令可实现一条指令加载/存原创 2017-08-05 14:43:22 · 4889 阅读 · 0 评论 -
1.20.ARM汇编指令集8之存储器访问指令(LDM和STM & SWP)
ARM汇编指令集之存储器访问指令(LDM和STM & SWP):* LDM & STM批量加载/存储指令可以实现在一组寄存器和一块连续的内存单元之间传输数据。LDM为加载多个寄存器,STM为存储多个寄存器,允许一条指令传送16个寄存器的任意子集或所有寄存器。指令格式:LDM{cond} Rn{!},reglist{^}STM{cond} Rn{!},reglist{^}原创 2017-08-05 16:36:54 · 5267 阅读 · 0 评论 -
1.1.可编程器件的编程原理
(朱有鹏老师嵌入式讲解笔记记录)电子器件的发展方向:模拟器件 -> 数字器件ASIC(Application Specific Integrated Circuit 专用集成电路):这个是不可以编程的 -> 可编程器件可编程器件的特点:1. CPU在固定频率的时钟控制下节奏运行。2. CPU可以通过总线读取外部存储设备中的二进制指令集,然后解码执行。3. 这些原创 2017-07-29 11:42:17 · 651 阅读 · 0 评论 -
1.21.ARM汇编指令集9之协处理器指令
ARM协处理器指令:CDP & LDC & STC & MCR & MRCARM支持协处理器操作,协处理器的控制要通过协处理器命令来实现。* CDP协处理器数据操作指令,ARM处理器通过CDP指令通知ARM协处理器执行特定的操作。该操作由协处理器完成,即对命令的参数的解释与协处理器有关,指令的使用取决与协处理器,若协处理器不能成功的执行该操作,将产生未定义指令异常中断。原创 2017-08-07 15:11:04 · 1253 阅读 · 0 评论 -
(嵌入式)关于arm中的存储控制器(三)终!
.equ:.equ symbol, expression: 把某一个符号(symbol)定义成某一个值(expression),该指令并不分配空间,相当于C语言中的#define。LR寄存器:LR(link register)连接寄存器,在ARM体系结构中LR的特殊用途有两种:1.用来保存子程序的返回地址。2.当异常发生时,LR中保存的值等于异常发生时PC的值减4(或者减2原创 2017-07-25 19:56:22 · 672 阅读 · 0 评论 -
1.11.ARM的37个寄存器详解
ARM处理器含有37个寄存器,这些寄存器包含以下两类:1. 31个通用寄存器:包括程序计数器PC等,都是32位的寄存器。2. 6个状态寄存器下面这幅图就是ARM中的 37 个寄存器:下面这幅图是 7种工作模式下每个模式下的寄存器列表:综上:* ARM共有37个寄存器,每个寄存器都是32位的长度。* 37个寄存器中30个为“通用型”原创 2017-08-03 15:41:56 · 7881 阅读 · 0 评论 -
1.3.RISC和CISC的区别
CISC:* Complex Instruction-set computer 复杂指令集CPU* CISC体系的设计理念是用最少的指令(注意说的是指令而不是指令集)来完成任务(譬如计算乘法只需要一条MUL指令即可),因此CISC的CPU本身设计复杂、工艺复杂,但好处是编程器好设计。CISC出现较早,至今Intel还一直采用CISC设计。RISC:* Reduced Ins原创 2017-07-29 15:45:10 · 1349 阅读 · 0 评论 -
1.4.统一编址&独立编址/哈佛结构&冯诺依曼结构
什么是IO?什么是内存?* 内存是程序的运行场所,内存和CPU之间通过总线连接,CPU通过一定的地址来访问具体的内存单元。* IO(input and output)是输入输出接口,是CPU和其它外部设备(如串口、LCD、触摸屏、LED等)之间通信的道路,一般的,IO就是指CPU的各种内部和外部的外设。内存访问方式:* 内存通过CPU的数据总线来寻址定位,然后通过CPU的数原创 2017-07-29 17:32:26 · 1126 阅读 · 0 评论 -
1.5.软件编程控制硬件的关键-----寄存器
什么是寄存器:* 寄存器属于CPU外设的硬件组成部分。* CPU可以像访问内存一样访问寄存器。* 寄存器是CPU的硬件设计者制定的,目的是留作外设被编程控制的“活动开关”。* 正如汇编指令集是CPU的编程接口API一样,寄存器是外设硬件的软件编程接口API。使用软件编程控制某一硬件,其实就是编程读写硬件的寄存器。关于寄存器:* 编程操作寄存器类似于访问内存。原创 2017-07-29 18:52:34 · 1475 阅读 · 0 评论 -
1.22.ARM汇编指令集10之杂项指令
这里记录的ARM杂项指令包括: SWI & MRS & MSR原创 2017-08-07 16:13:13 · 697 阅读 · 0 评论 -
1.6.CPU和外部存储器的接口
这里我们先来简单了解一些概念:SoC:(System On Chip)即片上系统。从狭义的角度来讲:它是信息系统核心的芯片集成,是将系统关键部件集成在一个芯片上;从广义的角度来讲:SoC是一个微小型系统。如果说中央处理器(CPU)是大脑,那么SoC就是包括大脑、心脏、眼睛等的集合。我们这里可以理解成一个S5PV210芯片(它包括CPU和一些常用的外设)。外部存储器:一般原创 2017-08-01 00:51:49 · 1321 阅读 · 0 评论 -
(嵌入式)关于arm中的存储控制器(一)
存储控制器(memory controller):它为CPU提供了访问外部设备所需的信号,这是一种通过总线方式来访问拓展的外设,在嵌入式中,这些拓展的外设可能不仅仅是内存,也包括网卡、Nor flash、Nand flash等等原创 2017-07-24 16:18:52 · 2571 阅读 · 0 评论 -
1.7.关于存储器的内存和外存
存储器一般包括:内存和外存。内存:RAM、ROM等。外存:磁盘、光盘、固态存储器等等。内存:与CPU经过总线连接的存储器是内存。程序被执行时,其指令代码和运行数据主要存放在内存中,因此也称其为主存储器,简称主存。内存由半导体存储器组成,它具有运行速度快,体积小的特点。半导体存储器有RAM和ROM两种类型。RAM(Random Access Memory)原创 2017-08-01 20:37:24 · 7651 阅读 · 2 评论 -
1.8.S5PV210启动过程详解(一)之预备知识
这里都是简单的说明一下:内存(这里先只关心这两个):SRAM:静态RAM,特点就是容量小、价格高。优点是不需要软件初始化直接上电就可以使用。DRAM:动态RAM,特点是容量大、价格低。缺点就是CPU上电后不能直接使用,需要软件初始化后才可以使用。外存(这里先只关心这两个):NorFlash:特点是容量小,价格高。优点是可以和CPU直接总线式连接,CPU上电后可以直接读取原创 2017-08-02 00:52:58 · 363 阅读 · 0 评论 -
(嵌入式)关于arm中的存储控制器(二)
关于存储控制器(memory controller)的寄存器使用:接上一篇继续:S3C2440芯片有Bank0~Bank7,8个块。存储控制器有13个寄存器,Bank0~Bank5只用BWSCON(BUS WIDTH & WAIT CONTROL REGISTER)和BANKCONx(BANK CONTROL REGISTER x为0~5)两个寄存器。 Bank6和Bank7外接SDR原创 2017-07-24 18:59:08 · 1020 阅读 · 0 评论 -
1.9.S5PV210启动过程详解(二)
三星的S5PV210的启动方式是:Internal ROM Booting 即 iROM启动To use IROM boot loader, several hardware features are required.* S5PV210X microprocessor based on CortexA8* 64KB Internal ROM (iROM)* 96KB In原创 2017-08-02 01:50:09 · 497 阅读 · 0 评论 -
1.10.ARM的编程模式和7种工作模式
ARM的基本设定:* ARM采用的是32位架构* ARM约定: - Byte(字节):8bits - Halfword(半字):16bits(2 Byte) - Word(字):32bits(4 Byte) * 大部分ARM core提供 - ARM指令集(32-bit) - Thumb指令集(16-bit) - Thumb2指令集(16原创 2017-08-03 11:08:15 · 514 阅读 · 0 评论 -
ARM汇编相关的伪指令
装载自:http://blog.chinaunix.net/uid-20626696-id-199009.html1. .word的意思 word expression就是在当前位置放一个word型的值,这个值就是expression 举例来说, _rWTCON: .word 0x15300000 就是在当前地址,即_rWTCON处放一个值0x15转载 2017-11-08 20:00:46 · 493 阅读 · 0 评论