ARM指令系统(CISC与RISC、新建工程、寻址方式)

1、CISC与RISC

(1)CPU模型:运算器和控制器

 复杂指令集和精简指令集(取决于N)

N=111(8051) 复杂指令集

N=34 (ARM) 精简指令集

SWAP(1)  MOV(3)(三条MOV代表一条SWAP指令的功能)   2/8定律(百分之二十的指令经常使用)

(2)程序语言:编译型与解释性

编译型(本地语言):直接生成机器码

解释型:如:java,一次编译到处运行(JVM本身是一个进程,去分配内存空间,将字节码转换为机器码,用户程序包含在此进程中)

(3)RISC(精简指令集)架构特点

采用固定长度的指令格式,方便PC判断

使用单周期指令,便于流水线操作

大量使用寄存器,采用LS结构访问在存储器

采用CISC架构的处理器具有相反的特征,不过功能更强大,采用CISC架构的处理器有X86

2、开发工具

(1)工具介绍:

交又编译工具链及提供商
交又编译工具链的命名规则为:arch  -vendor  -os     -(gnu)eabi
                                             arm/mips 提供商  目标0s Embedded Application Binary Interface

比如:

arm-none-eabi-gcc 用于编译ARM棵机(ubt,kernel),不能编译与os相关的应用程序,由GNU提供

arm-none-linux-gnueabi-gcc 基于ARM架村2inux系统的程序,包含uboot,kernel,Linux应用程序,由

armccARM官方的编译工具链,功能和arm-hone-eabi类似

(2)ARM官方开发工具:ADS,RVDS,KEIL(MDK-arm),DS-5 Development KEIL(MDK):编译器用的是armcc,开发环境:uVision IDE,只支持ARM7/9和全系Cortex-M,不支持cortex-A系列。

DS5:编译器用的是armcc或者arm-none-eabi-gcc,开发环境:Eclipse,支持AM全系列内核。
(3) KEIL MDK-ARM C51 uVision IDE

KEIL:公司名,被ARM收购
MDK-ARM(Microcontroller Development Kit):专门针对ARM核的开发工具包

C51:针对8051的开发工具包

uVision IDE:用于工程管理,源代码编辑


3、MDK-ARM的使用(软件安装/工程建立)
(1)Project---New uVision Project

(2)选择CPU(Sumsung-s3c2440),不添加启动代码

(3)File-New 保存命名 startup.s

(4)添加.s文件:

 (5)书写代码(注意添加TAB):

一个点:相当于while(1)

(6)定义ROM

(7)去掉勾,点击编辑(去除警告):

 去掉一行:

 (8)编译:

4、寻址方式

(1)指令格式
<指令助记符>{<执行条件>} {S}   <目标寄存器>,<操作数1的寄存器> {,<第2操作数>)

注意:

<>号内的项是必需的;(MOV、LDR等)

{ }号内的项是可选的;

S:是否影响CPSR寄存器的值,书写时影响CPSR

CMP不需要增加“s“就可改变相应的标志位
例如:SUBS PC,LR,#4
           MOV  R0,#0X00
           LDR   R0,[R1]
所有指令都是32bit(ARM指令),load/store体系结构(对存储器的访问只能使用加载和存储指令实现)
(2) 条件码与机器码
使用指令条件码可实现高效的逐辑操作,提高代码执行效率。
例如:if(a>b)a++;    CMP       R0,R1

          else b++;            ADDHI    R0,R0,#1
                                       ADDLS    R1,R1,#1(LS:小于等于)

注意:CPSR里面的标志位(不用记)对应于条件码助记符(记)

常用的条件码:EQ NE HI LS 
机器码:MOV  R0,#0×00 <1110 0011 1010 0000000>  0xE3 A0 0000

猜你喜欢

转载自www.cnblogs.com/zhai1997/p/12542488.html