网与嵌入式系统开发--第3章_ARM指令集与程序设计.ppt
《网与嵌入式系统开发--第3章_ARM指令集与程序设计.ppt》由会员分享,可在线阅读,更多相关《网与嵌入式系统开发--第3章_ARM指令集与程序设计.ppt(204页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、网与嵌入式系统开发-第3章_ARM指令集与程序设计 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望 本章主要内容本章主要内容3.1 ARM指令系统特点3.2 ARM指令系统3.3 Thumb指令3.4 ARM伪操作与伪指令3.5 ARM汇编程序设计3.6 ARM C语言基础及混合编程3.7 超级终端的使用3.8 ADS集成开发环境的使用 思考与习题3.1 ARM指令系统特点指令系统特点 ARM ARM指令系统属于指令系统属于RISCRISC指令系统。指令系统。标准
2、的标准的ARMARM指令每条都是指令每条都是3232位长,有位长,有些些ARMARM核还可以执行核还可以执行ThumbThumb指令集,指令集,该指令集是该指令集是ARMARM指令集的子集,每条指令集的子集,每条指令只有指令只有1616位。位。3.1.1 数据类型数据类型3.1.2 ARM指令特点指令特点回本章目录回本章目录3.1 ARM指令系统特点指令系统特点3.1.1 数据类型数据类型ARMARM处理器一般支持下列处理器一般支持下列6 6种数据类型:种数据类型:8 8位有符号字节类型数据;位有符号字节类型数据;8 8位无符号字节类型数据;位无符号字节类型数据;1616位有符号半字类型数据;
3、位有符号半字类型数据;1616位无符号半字类型数据;位无符号半字类型数据;3232位有符号字类型数据;位有符号字类型数据;3232位无符号字类型数据。位无符号字类型数据。回本节目录回本节目录3.1 ARM指令系统特点指令系统特点3.1.1 数据类型(续)有些有些ARMARM处理器不支持半字和有符号处理器不支持半字和有符号字节数据类型。在字节数据类型。在ARMARM内部,所有指令都内部,所有指令都是是3232位操作数。短的数据类型只有在数位操作数。短的数据类型只有在数据传送类指令中才被支持。当据传送类指令中才被支持。当1 1个字节数个字节数据取出后,被扩展到据取出后,被扩展到3232位,在内部数
4、据位,在内部数据处理时,作为处理时,作为3232位的值进行处理,并且位的值进行处理,并且ARMARM指令以字为边界。所有指令以字为边界。所有ThumbThumb指令都指令都是是1616位指令,并且以位指令,并且以2 2个字节为边界。个字节为边界。ARMARM协处理器也支持另外的数据类型,包协处理器也支持另外的数据类型,包括一套浮点数数据类型。括一套浮点数数据类型。3.1 ARM指令系统特点指令系统特点3.1.2 ARM指令特点指令特点1 1)每条指令多功能)每条指令多功能 ARM ARM指令一个重要的特点是它所有的指令指令一个重要的特点是它所有的指令都带有条件,例如用户可以测试某个寄存器的都带
5、有条件,例如用户可以测试某个寄存器的值但是直到下次使用同一条件进行测试时,才值但是直到下次使用同一条件进行测试时,才能有条件的执行这些指令。能有条件的执行这些指令。ARMARM指令另一个重指令另一个重要的特点是具有灵活的第要的特点是具有灵活的第2 2操作数,既可以是操作数,既可以是立即数,也可以是逻辑运算,使得立即数,也可以是逻辑运算,使得ARMARM指令可指令可以在读取数值的同时进行算术和移位操作。它以在读取数值的同时进行算术和移位操作。它可以在几种摸式下操作,包括通过使用可以在几种摸式下操作,包括通过使用SWISWI(软件中断)指令从用户模式进入系统模式。(软件中断)指令从用户模式进入系统
6、模式。回本节目录回本节目录3.1 ARM指令系统特点指令系统特点3.1.2 ARM指令特点(续)2 2)协处理器的作用)协处理器的作用 ARM ARM内核可以提供协处理器指令接口,通内核可以提供协处理器指令接口,通过扩展协处理器完成复杂的功能。因此,过扩展协处理器完成复杂的功能。因此,ARMARM指令还包含了多条协处理器指令,使用多达指令还包含了多条协处理器指令,使用多达1616个协处理器;允许将其他处理器通过协处器个协处理器;允许将其他处理器通过协处器接口进行紧耦合;还包括几种内存管理单元的接口进行紧耦合;还包括几种内存管理单元的变种,简单的内存保护到复杂的页面层次。例变种,简单的内存保护到
7、复杂的页面层次。例如,管理存储部件如,管理存储部件MMUMMU就是就是ARMARM内核通过协处理内核通过协处理器器CP15CP15实现对内存的管理的。实现对内存的管理的。3.1 ARM指令系统特点指令系统特点3.1.2 ARM指令特点(续)3 3)ThumbThumb指令指令 ARM ARM有两种指令集:有两种指令集:1616位位ThumbThumb指令集和指令集和3232位位ARMARM指令集。使用指令集。使用1616位的存储器可以降低位的存储器可以降低成本。在这种情况下,成本。在这种情况下,ThumbThumb指令集的整体执指令集的整体执行速度比行速度比ARM32ARM32位指令集快,而且
8、提高了代码位指令集快,而且提高了代码密度,所以一般用密度,所以一般用ThumbThumb编译器将编译器将C C语言程序编语言程序编译成译成1616位的代码。处理器一开始总在位的代码。处理器一开始总在ARMARM状态,状态,可使用可使用BXBX指令转换到指令转换到ThumbThumb状态。状态。3.1 ARM指令系统特点指令系统特点3.1.2 ARM指令特点(续)4 4)具有)具有RISCRISC指令的特点指令的特点 由于由于ARMARM指令属于指令属于RISCRISC指令,所以具有指令,所以具有RISCRISC指令的特点:指令少,且等长,便于充分指令的特点:指令少,且等长,便于充分利用流水线技
9、术;使用多寄存器,且多为简单利用流水线技术;使用多寄存器,且多为简单的的LoadLoad与与StoreStore指令(从内存申读取某个值,指令(从内存申读取某个值,执行完操作后再将其放回内存)。执行完操作后再将其放回内存)。3.1 ARM指令系统特点指令系统特点3.1.2 ARM指令特点(续)5 5)立即数和直接地址)立即数和直接地址 由于指令统一为由于指令统一为3232位,无法在位,无法在1 1条指令中条指令中存放存放3232位立即数。一般立即数为位立即数。一般立即数为5 51212位。采位。采用一些特殊的方法,使它能处理用一些特殊的方法,使它能处理3232位立即数。位立即数。同理,直接(或
10、相对)地址一般为同理,直接(或相对)地址一般为2424位,但由位,但由于指令地址的低于指令地址的低2 2位为位为0000,故寻地范围为,故寻地范围为226226,相对地址为,相对地址为225225。3.2 ARM指令系统指令系统 ARM ARM的指令按功能分为分支类指令、数据处理类指令、的指令按功能分为分支类指令、数据处理类指令、乘法类指令、数据传送类指令、协处理器类指令以及杂项指乘法类指令、数据传送类指令、协处理器类指令以及杂项指令(包括状态寄存器传送指令、软件中断指令和断点指令)。令(包括状态寄存器传送指令、软件中断指令和断点指令)。3.2.1 ARM指令的寻址方式指令的寻址方式3.2.2
11、 ARM指令的条件执行指令的条件执行3.2.3 Load/Store类指令类指令3.2.4 ARM数据处理类指令数据处理类指令3.2.5 ARM转移类指令(续)转移类指令(续)回本章目录回本章目录3.2 ARM指令系统指令系统3.2.1 ARM指令的寻址方式指令的寻址方式1 1)寄存器寻址)寄存器寻址ADD R0,R1,R2ADD R0,R1,R2;R0-R1+R2;R0-R1+R22 2)立即寻址)立即寻址ADD R3,R3,#1ADD R3,R3,#1;R3-R3+1;R3 R0;(R3)-R0回本节目录回本节目录3.2 ARM指令系统指令系统3.2.1 ARM指令的寻址方式(续)4 4)
12、寄存器变址寻址)寄存器变址寻址LDR R0,R1,#14LDR R0,R1,#14;(R1)+14)-R0;(R1)+14)-R0 前索引寻址:前索引寻址:LDR R0,R1+4!LDR R0,R1+4!;R0-R1+4,R1-R1+4,;R0-R1+4,R1-R1+4,“!”“!”表示完成数据传送后更新基址寄存器表示完成数据传送后更新基址寄存器 后索引寻址:后索引寻址:LDR R0,R1,#4LDR R0,R1,#4;R0-R1,R1-R1+4,;R0-R1,R1-R1+4,这里没有这里没有“!”“!”基址加索引寻址:基址加索引寻址:LDR R0,R1,R2LDR R0,R1,R2;R0-R
13、1+R2;R0-R1+R23.2 ARM指令系统指令系统3.2.1 ARM指令的寻址方式(续)5 5)多寄存器寻址)多寄存器寻址LDMIA R1,R0,R2,R5LDMIA R1,R0,R2,R5;R0-R1,R2;R0-R1,R2-R1+4,R5R1+4,R5-R1+8R1+8把把R1R1指向的连续存储单元的内容送到指向的连续存储单元的内容送到R0R0、R2R2和和R5R5。由于传送数是以由于传送数是以3232位为单位的字,因此基址应当位为单位的字,因此基址应当字对齐。字对齐。3.2 ARM指令系统指令系统3.2.1 ARM指令的寻址方式(续)6 6)堆栈寻址)堆栈寻址 堆栈:按特定顺序进行
14、存取的存储区,有后堆栈:按特定顺序进行存取的存储区,有后进先出(进先出(LIFOLIFO)或先进后出()或先进后出(FILOFILO)两种。堆栈)两种。堆栈指针所指定的存储单元就是栈顶。存储器堆栈可指针所指定的存储单元就是栈顶。存储器堆栈可分为以下分为以下2 2种。种。l向上生长:向高地址方向生长,递增堆栈向上生长:向高地址方向生长,递增堆栈(Ascending StackAscending Stack););l向下生长:向低地址方向生长,递减堆栈向下生长:向低地址方向生长,递减堆栈(Descending StackDescending Stack)。)。3.2 ARM指令系统指令系统3.2.
15、1 ARM指令的寻址方式(续)6 6)堆栈寻址)堆栈寻址 堆栈指针指向最后压入堆栈的有效数据项,称为满堆堆栈指针指向最后压入堆栈的有效数据项,称为满堆栈(栈(Full StackFull Stack);堆栈指针指向下一个空位置,称为空);堆栈指针指向下一个空位置,称为空堆栈(堆栈(Empty StackEmpty Stack)。)。ARMARM硬件中的堆栈分为以下硬件中的堆栈分为以下4 4种组种组合:合:l满向上生长型,堆栈按高地址方向生长,当前堆栈指针满向上生长型,堆栈按高地址方向生长,当前堆栈指针指向一个有效值;指向一个有效值;l空向上生长型,堆栈按高地址方向生长,当前堆栈指针空向上生长型
16、,堆栈按高地址方向生长,当前堆栈指针指向一个空值;指向一个空值;l满向下生长型,堆栈按低地址方向生长,当前堆栈指针满向下生长型,堆栈按低地址方向生长,当前堆栈指针指向一个有效值;指向一个有效值;l空向下生长型,堆栈按低地址方向生长,当前堆栈指针空向下生长型,堆栈按低地址方向生长,当前堆栈指针指向一个空值。指向一个空值。3.2 ARM指令系统指令系统3.2.1 ARM指令的寻址方式(续)6 6)堆栈寻址)堆栈寻址 常见多字节传送指令如表常见多字节传送指令如表3-23-2所示。所示。FDFD、EDED、FAFA、EAEA后缀在堆栈操作时使用,后缀在堆栈操作时使用,F F(FullFull)和)和E
17、 E(EmptyEmpty)分别代)分别代表堆栈指针指向满或空,表堆栈指针指向满或空,A A(AscendingAscending)和)和D D(DescendingDescending)分别表示堆栈向上或向下生长。当堆栈)分别表示堆栈向上或向下生长。当堆栈由低地址向高地址生成时,称为递增堆栈(向上高地址方由低地址向高地址生成时,称为递增堆栈(向上高地址方向);当堆栈由高地址向低地址生成时,称为递减堆栈向);当堆栈由高地址向低地址生成时,称为递减堆栈(向下低地址方向)。(向下低地址方向)。IAIA、IBIB、DADA、DBDB后缀在一般数据块后缀在一般数据块传送时使用(传送时使用(Increa
18、seIncrease、DecreaseDecrease、AfterAfter、BeforeBefore)。)。3.2 ARM指令系统指令系统3.2.1 ARM指令的寻址方式(续)6 6)堆栈寻址)堆栈寻址指令传送型式指令传送型式堆堆 栈栈一般数据存取一般数据存取L L位位P P位位U U位位空向下生长型(之前增量)空向下生长型(之前增量)LDMEDLDMEDLDMIBLDMIB1 11 11 1满向下生长型(之后增量)满向下生长型(之后增量)LDMFDLDMFDLDMIALDMIA1 10 01 1空向上生长型(之前增量)空向上生长型(之前增量)LDMEALDMEALDMDBLDMDB1 11
19、 10 0满向上生长型(之后增量)满向上生长型(之后增量)LDMFALDMFALDMDALDMDA1 10 00 03.2 ARM指令系统指令系统3.2.1 ARM指令的寻址方式(续)6 6)堆栈寻址)堆栈寻址指令传送型式指令传送型式堆堆 栈栈一般数据存取一般数据存取L L位位P P位位U U位位满向上生长型(之前增量)满向上生长型(之前增量)STMFASTMFASTMIBSTMIB0 01 11 1空向上生长型(之后增量)空向上生长型(之后增量)STMEASTMEASTMIASTMIA0 00 01 1空向下生长型(之前增量)空向下生长型(之前增量)STMFDSTMFDSTMDBSTMDB0
20、 01 10 0满向下生长型(之后增量)满向下生长型(之后增量)STMEDSTMEDSTMDASTMDA0 00 00 03.2 ARM指令系统指令系统3.2.1 ARM指令的寻址方式(续)7)块拷贝寻址)块拷贝寻址LDMIA R0!,R2-R9;从从R0指向的位置拷贝指向的位置拷贝8个字个字到到R2-R9STMIA R1,R2-R9;R2-R9拷贝拷贝8个字到个字到R1指向的指向的位置位置从从R0指向的位置拷贝指向的位置拷贝8个字到个字到R1指向的位置。指向的位置。R2R9保保存的是有用值,就应该把它们压进堆栈保存,可以如下处存的是有用值,就应该把它们压进堆栈保存,可以如下处理:理:STMF
21、D R13!,R2-R9;寄存器寄存器R2-R9内容保存到堆内容保存到堆栈栈PUSHLDMIA R0!,R2-R9;R0指向位置拷贝指向位置拷贝R2R9STMIA R1,R2-R9;R2R9拷贝到拷贝到R1指向的位置指向的位置LDMFD R13!,R2-R9;从堆栈恢复从堆栈恢复POP3.2 ARM指令系统指令系统3.2.1 ARM指令的寻址方式(续)8)相对寻址)相对寻址B rel;(PC)+relPC3.2 ARM指令系统指令系统3.2.2 ARM指令的条件执行指令的条件执行 每条每条ARM指令都是有条件执行,包括特权调用和协指令都是有条件执行,包括特权调用和协处理器指令,可根据执行结果来
22、选择是否更新条件码。若处理器指令,可根据执行结果来选择是否更新条件码。若要更新条件码,则指令中须包含后缀要更新条件码,则指令中须包含后缀“S”。条件码占。条件码占32位指令的高位指令的高4位。位。一些指令(如一些指令(如CMP、CMN、TST和和TEQ)不需要后)不需要后缀缀“S”,它们的唯一功能就是更新条件标志。没有执行,它们的唯一功能就是更新条件标志。没有执行的条件指令对标志没有影响,一些指令只更新部分标志,的条件指令对标志没有影响,一些指令只更新部分标志,不影响其他标志。可以根据另外一条指令设置的标志,有不影响其他标志。可以根据另外一条指令设置的标志,有条件地执行某条指令,分如下两种情况
23、:在更新标志的指条件地执行某条指令,分如下两种情况:在更新标志的指令后立即执行;在插入的几条不更新标志的指令后执行。令后立即执行;在插入的几条不更新标志的指令后执行。没有条件后缀表示如何条件下都执行。没有条件后缀表示如何条件下都执行。回本节目录回本节目录3.2 ARM指令系统指令系统3.2.2 ARM指令的条件执行(续)条件码中的条件码中的N、Z、C和和V位的值决定指令如位的值决定指令如何指令,何指令,ARM条件码如表条件码如表3-3所示。所示。说明:说明:HS、LO、HI、LS这这4个条件码指的是无个条件码指的是无符号数,符号数,GE、LT、GT、LE这这4个条件码指的是个条件码指的是符号数
24、。符号数。3.2 ARM指令系统指令系统3.2.2 ARM指令的条件执行(续)操作码操作码31:28条条 件件 码码含含 义义标志位状态显示标志位状态显示00000000EQEQ相等相等/是否为是否为0Z Z置位置位00010001NENE不等不等Z Z清零清零00100010CS/HS*CS/HS*进位置位进位置位/大于大于C C置位置位00110011CC/LO*CC/LO*进位清零进位清零/小于小于C C清零清零01000100MIMI结果为负结果为负N N置位置位01010101PLPL结果为正结果为正N N清零清零3.2 ARM指令系统指令系统3.2.2 ARM指令的条件执行(续)操
25、作码操作码31:28条条 件件 码码含含 义义标志位状态显示标志位状态显示01100110VSVS溢出溢出V V置位置位01110111VCVC无溢出无溢出V V清零清零10001000HI*HI*大于大于C C置位并且置位并且Z清零清零10011001LS*LS*小于小于C C清零或清零或Z置位置位10101010GE*GE*大于等于大于等于N N等于等于V10111011LT*LT*小于等于小于等于N N不等于不等于V11001100GT*GT*大于大于Z Z清零或清零或N等于等于V11101110LE*LE*小于等于小于等于Z Z置位或置位或N不等于不等于V11111111ALAL始终始
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 系统 开发 _ARM 指令 程序设计
限制150内