读书笔记----ARM汇编 编程
- 格式:pdf
- 大小:303.83 KB
- 文档页数:72
第4章ARM汇编语言程序设计本章介绍如何编写ARM和thumb汇编语言程序。
同时介绍ARM汇编编译器armasm的使用方法。
4.1伪操作ARM 汇编语言源程序中语句由指令、伪操作和宏指令组成。
在ARM中伪操作称为derective,这里为保持和国内在IBM PC汇编语言中对名词翻译的一致性derective称为伪操作;同样在ARM中宏指令被称为pseudo-instructlon,这里将其称为宏指令,宏指令也是通过伪操作定义的。
本节介绍伪操作和宏指令。
伪操作不像机器指令那样在计算机运行期间由机器执行,它是在汇编程序肘源程序汇编期间由汇编程序处理的。
宏是一段独立的程序代码。
在程序中通过宏指令调用该宏。
当程序被汇编时,汇编程序将对每个宏调用作展开,用宏定义体取代源程序中的宏指令。
本节介绍以下类型的ARM伪操作和宏指令。
●符号定义(Symbol definition伪操作。
●数据定义(Data definition)伪操作。
●汇编控制(Assembly control)伪操作。
●框架描述(Frame description)伪操作。
●信息报告(Reporting)伪操作。
●其他(Miscellaneous)伪操作。
4.1.1符号定义伪操作符号定义(Symbol definition)伪操作用于定义ARM汇编程序中的变量,对变量进行赋值以及定义寄存器名称。
包括以下伪操作。
●GBLA、GBLL及GBLS声明全局变量。
●LCLA.LcLL及LCLS 声明局部变量。
●SETA.SETL及SETS 给变量赋值。
●RLIST为通用寄存器列表定义名称。
●CN为协处理器的寄存器定义名称。
●CP为协处理器定义名称。
●DN及SN为VFP的寄存器定义名称。
FN为FPA的浮点寄存器定义名称。
1 GBLA GBLL及GBLSGBLA GBLL及GBLS伪操作用于声叫个ARM程序中的全局变量,并将其初始化。
GBLA伪操作声明一个全局的算术变量,并将其初始化成0。
ARM汇编语言程序设计总结一、常用指令1. 存储器访问指令LDRSTRLDRLoad 32-bit word to Memory.Syntax LDR{ cond } Rd, [Rn]LDR{ cond } Rd, [Rn, offset]LDR{ cond } Rd, [Rn, offset]!LDR{ cond } Rd, labelLDR{ cond } Rd, [Rn], offsetDescription LDR{ cond } Rd, [Rn] (zero offset)Rn is used as address value.LDR{ cond } Rd, [Rn, offset] (Pre-indexed offset)Rn and offset are added and used as address value.LDR{ cond } Rd, [Rn, offset]{!} (Pre-indexed offset with update)Rn and offset are added and used as address value. The new address value is written to Rn.LDR{ cond } Rd, label (Program-relative)The assembler calculates the PC offset and generatesLDR{ cond } Rd, [R15, offset]. LDR{ cond } Rd, [Rn], offset (Post-indexed offset)Rn is used as address value. After memory transfer, the offset is added to Rn.STRStore register 32-bit words to Memory. The address must be 32-bit word-aligned.Syntax STR{ cond } Rd, [Rn]STR{ cond } Rd, [Rn, offset]STR{ cond } Rd, [Rn, offset]!STR{ cond } Rd, labelSTR{ cond } Rd, [Rn], offsetDescription STR{ cond } Rd, [Rn] (zero offset)Rn is used as address value.STR{ cond } Rd, [Rn, offset] (Pre-indexed offset)Rn and offset are added and used as address value.STR{ cond } Rd, [Rn, offset]! (Pre-indexed offset with update)Rn and offset are added and used as address value. The new address value is written to Rn.STR{ cond } Rd, label (Program-relative)The assembler calculates the PC offset and generatesSTR{ cond } Rd, [R15], offset. STR{ cond } Rd, [Rn], offset (Post-indexed offset)Rn is used as address value. After memory transfer, the offset is added to Rn.2. —般数据处理指令ADD SUB ADC SBCAND, ORR, EOR,CMP TSTUMULL, UMLAL, SMULL, and SMLALMUL, MLA, and MLSADCAdd with Carry.Syntax ADC{ cond }{S} Rd, Rn, Op2Description Add Rn and Op2 and Carry flag and store result to Rd. ADC is typical used for multi-word arithmetic.Condition Flags If S is specified update flags: N, Z, C, V.storeresult in R4SUBSubtract registers.Syntax Description Condition Flags SUB{ cond }{S} Rd, Rn, Op2subtracts the value of Op2 from the value in Rn. If S is specified update flags: N,乙C, V.Example SUBS R8,R6,#240 〃R8=R6-240 SBCSBC{ cond }{S} Rd, Rn, Op2 synthesize multiword arithmetic. If S is specified update flags: N,乙 C, V.ANDLogical AND operation.Syntax Description Condition Flags AND{ cond }{S} Rd, Rn, Op2Load Rd with logical AND of Rn with Op2. Rd := Rn AND Op2 If S is specified, N, Z flags are updated. C flag may be updated bycalculation of Op2. ExampleAND R9,R2,#0xFF00 // Load R9 with R2 and value in 0xFF00ORRLogical OR operation.ORR{ cond }{S} Rd, Rn, Op2OR operations on the values in Rn and Op2.If S is specified, N, Z flags are updated. C flag may be updated byORR R2, R0, R5 // Rd = R0 or R5CMPCompare. Used in combination with conditional branch instructions.Syntax CMP { cond } Rn, Op2Description subtracts the value of Op2 from the value in Rn (equals to the SUBSinstruction with a discarded result).This instruction updates the condition flags, but do not place a result in a register. Condition FlagsN, Z, C and V flags are updated.ExampleCMP R2, R9 //Subtract value of R9 from R2TSTTest. Syntax TST{ cond } Rn, Op2Descriptionperforms a bitwise AND operation on the value in Rn and the value of Op2.Subtract with carry. Syntax Description Condition FlagsSyntax Description Condition Flags calculation of Op2.ExampleThis is similar to the ANDS instruction, except that the result is discarded.Condition Flags N and Z flags are updated according the result. C flag may be updatedduring the calculation of Op2.Example TSTNE r1,r5,ASR r1MULMultiply (32-bit by 32-bit, bottom 32-bit result).Syntax MUL{ cond }{S} Rd, Rm, RsDescription multiplies the values from Rm and Rs, and places the least significant 32 bits of the result in Rd.Condition Flags If S is specified:N and Z flags according to the result.the C flag in ARM architecture v4 and earlier will be corrupted.the C flag in ARM architecture v5 and later is not affected.Example MUL R10, R2, R5 〃R10:= R2*R53. 分支控制指令B, BL, BX, BLX, and BXJBBranch to label. Used to jump to a specific program location.Syntax B{ cond } labelDescription The jump distance must be within -252 to +258 bytes for conditional and ±2 KBytes for unconditional branch.Condition Flags not modified.Example CMP R1,#1// compare R10 with #10BEQ val_ok // jump to label val_okBLBranch with Link. Use to call subroutines.Syntax Descriptiondistance must be withinBL{ cond } labelCopy address of next instruction to R14 and jump to label. ThejumpBXBranch indirect and switch CPU mode (Thumb / ARM) as required.Syntax BX{ cond } RmDescription Condition FlagsBranch to address in Rm. Change to ARM mode if bit 0 of Rm is clear. not modified.ExampleBX R5 // branch in direct to address fun cti on4. ARM 伪指令1•符号定义伪指令GBLA, GBLL, and GBLS LCLA, LCLL, and LCLS2.数据定义伪指令Condition Flagsnot modified.DCBDCD and DCDU 5. 条件代码Con diti on Codeinclude a condition code field. This{cond}A conditional instruction is only executed on match of the condition flags in theProgramStatus Register . For example, the BEQ ( B instruction with EQ condition) branches only if the {cond} field is empty the instruction is always executed.Examples:Most ARM instructions and the Thumb Branch instruction field is marked in the CPU instructions withZ flag is set. If the6•移位类型The ARM CPU has very powerful shift operations that can be used together with standard CPU instructions. The various shift types are explained below:Logical Shift Right (LSR)Logical shift right is encoded with LSR #n or LSR Rs in the bit 31 and the Carry flag (C) holds the last bit shifted out.3130 29lla--------------------------------------------------------------------------------------------------------------------------- rb■IArithmetic Shift Right (ASR)Arithmetic shift right is encoded with ASR #n or ASR Rs in the Op2 field. The sign bit (bit 31of value) is shifted into the high bit 31 and the Carry flag (C) holds the last bit shifted out.Rotate Right (ROR)Rotate right is encoded with ROR #n in the Op2 field. Bit 0 of the value is shifted into bit 31.The Carry flag (C) holds the last bit shifted out.31302&Bit211Q■h -■!lBh*■Op2 field. The value 0 is shifted intoBitLogical Shift Left (LSL)Logical shift left is encoded with LSL #n or LSL Rs in the bit 0 and the Carry flag (C) holds the last bit shifted out.Op2 field. The value 0 is shifted into313Bit------ 亦 3029Bil2-- ■1i■a■iIRotate Right Exte nded (RRX)Rotate right extended is encoded with RRX in the shiftedinto bit 31. The shifted out bit 0 is written to C. 31 30 29Binary operators RealView Compilati on Tools for 口 Visio n Versio nAssembler Guide 4.0Home > Assembler Reference > Expressions, literals, and operators> Binary operators Binary operators are written between the pair of subexpressions they operate on.Binary operators have lower precedence than unary operators. Binary operators appear in this section in order of precedence.NoteThe order of precedence is not the same as in C, see Multiplicative operatorsMultiplicative operators have the highest precedence of all binary operators. They act only on numeric expressions.Table 3.9 shows the multiplicative operators.Table 3.9. Multiplicative operators*A*BMultiply / A/BDivide:MOD: |% A:MOD:B A modulo BOp2 field. The value of the Carry flag (C) isOperator precedence in armasm and CString manipulation operatorsTable 3.10 shows the string manipulation operators. In In the slicing operators LEFT and RIGHT:A must be a stringB must be a numeric expression.Table 3.10. String manipulation operators:CC:」A:CC:B B concatenated onto the end of A:LEFT: J A:LEFT:B J The left-most B characters of A:RIGHT: A:RIGHT:B ]The right-most B characters of AShift operatorsShift operators act on numeric expressions, shifting or rotating the first operand by the amount specified by the second.Table 3.11 shows the shift operators.Table 3.11. Shift operators:ROL: A:ROL:B Rotate A left by B bits:ROR :A:ROR:B Rotate A right by B bits:SHL: << A:SHL:B Shift A left by B bits:SHR : >> A:SHR:BShift A right by B bitsNoteSHR is a logical shift and does not propagate the sign bit.CC, both A and B must be strings.Addition, subtraction, and logical operatorsAddition and subtraction operators act on numeric expressions.bitwise , that is, Logical operators act on numeric expressions. The operation is performed independently on each bit of the operands to produce the result.Table 3.12 shows addition, subtraction, and logical operators.Table 3.12. Addition, subtraction, and logical operators+ A+B Add A to B- A-B[Subtract B from A:AND:」& A:AND:B] Bitwise AND of A and B|EOR:」 A A:EOR:B| Bitwise Exclusive OR of A and B:OR: |1]A:OR:B Bitwise OR of A and BRelational operatorsTable 3.13 shows the relational operators. These act on two operands of the same type to produce a logical value.The operands can be one of:numericprogram-relativeregister-relativestrings.Strings are sorted using ASCII ordering. String A is less than string B if it is a leading substring of string B, or if the left-most character in which the two strings differ is less in string A than in string B.Arithmetic values are unsigned, so the value of 0>-1 is {FALSE}. Table 3.13. Relational operatorsBoolean operatorsThese are the operators with the lowest precedence. They perform the standard logical operations on their operands.In all three cases both A and B must be expressions that evaluate to either {FALSE}. Table 3.14 shows the Boolean operators.Table 3.14. Boolean operators:LAND: | && A:LAND:B JLogical AND of A and B:LEOR: J A:LEOR:B J Logical Exclusive OR of A and B :LOR: n II 1 A:LOR:B Logical OR of A and B= == A=B A equal to B>A>B A greater than B>=A>=B A greater than or equal to B<A<B A less than B<=A<=B A less than or equal to B/=l <> != A/=B| A not equal to B{TRUE} or。
arm汇编lsls指令摘要:1.介绍arm 汇编语言2.讲解lsls 指令的作用3.分析lsls 指令的语法4.举例说明lsls 指令的使用5.总结lsls 指令在arm 汇编中的重要性正文:arm 汇编语言是一种底层编程语言,用于编写针对ARM 处理器的程序。
它直接操作硬件,允许程序员对寄存器和内存进行细致的控制。
在这篇文章中,我们将详细介绍arm 汇编语言中的一个重要指令:lsls。
lsls 指令用于将一个寄存器的值左移(或算术左移)指定的位数。
它是基于ARMv8-A 架构的,提供了一种高效的方法来扩展32 位和64 位整数的值。
lsls 指令可以显著提高代码密度,使得程序更加紧凑。
lsls 指令的语法如下:```LSLS {<c>} <Rd>, <Rs>```其中:- `<c>`:可选的常数,表示要左移的位数。
如果未指定,则默认为0。
- `<Rd>`:目标寄存器,用于存储左移后的结果。
- `<Rs>`:源寄存器,包含要左移的值。
举个例子,假设我们有一个32 位整数12345,我们想要将其左移16 位,可以使用以下lsls 指令:```LSLS #16, [12345]```执行这个指令后,结果将存储在寄存器中,值为2097152。
需要注意的是,如果将一个32 位整数左移32 位,结果将变为0。
这是因为32 位整数的最大值(即2^31 - 1)在左移32 位后将被清零。
总之,lsls 指令在arm 汇编语言中起着重要作用,它提供了一种简单而高效的方法来左移整数。
ARM简介及编程1.ARM简介(摘录) ARM(Advanced RISC Machines)是微处理器行业的一家知名企业,设计了大量高性能、廉价、耗能低的RISC处理器、相关技术及软件。
技术具有性能高、成本低和能耗省的特点。
适用于多种领域,比如嵌入控制、消费/教育类多媒体、DSP和移动式应用等。
ARM将其技术授权给世界上许多著名的半导体、软件和OEM厂商,每个厂商得到的都是一套独一无二的ARM相关技术及服务。
利用这种合伙关系,ARM很快成为许多全球性RISC标准的缔造者。
目前,总共有30家半导体公司与ARM签订了硬件技术使用许可协议,其中包括Intel、IBM、LG半导体、NEC、SONY、菲利浦和国民半导体这样的大公司。
至于软件系统的合伙人,则包括微软、升阳和MRI等一系列知名公司。
ARM架构是面向低预算市场设计的第一款RISC微处理器。
2.产品介绍ARM提供一系列内核、体系扩展、微处理器和系统芯片方案。
由于所有产品均采用一个通用的软件体系,所以相同的软件可在所有产品中运行(理论上如此)。
典型的产品如下。
①CPU内核--ARM7:小型、快速、低能耗、集成式RISC内核,用于移动通信。
-- ARM7TDMI(Thumb):这是公司授权用户最多的一项产品,将ARM7指令集同Thumb 扩展组合在一起,以减少内存容量和系统成本。
同时,它还利用嵌入式ICE调试技术来简化系统设计,并用一个DSP增强扩展来改进性能。
该产品的典型用途是数字蜂窝电话和硬盘驱动器。
--ARM9TDMI:采用5阶段管道化ARM9内核,同时配备Thumb扩展、调试和Harvard 总线。
在生产工艺相同的情况下,性能可达ARM7TDMI的两倍之多。
常用于连网和顶置盒。
②体系扩展-- Thumb:以16位系统的成本,提供32位RISC性能,特别注意的是它所需的内存容量非常小。
③嵌入式ICE调试由于集成了类似于ICE的CPU内核调试技术,所以原型设计和系统芯片的调试得到了极大的简化。
arm 汇编指令一、arm 汇编简介1.1 什么是 arm 汇编1.2 arm 汇编的应用领域1.3 arm 汇编与高级语言的对比二、arm 汇编基础2.1 寄存器2.1.1 通用寄存器2.1.2 特殊寄存器2.2 数据传输指令2.2.1 加载指令2.2.2 存储指令2.3 算术指令2.3.1 加法指令2.3.2 减法指令三、arm 汇编进阶3.1 分支指令3.1.1 无条件分支3.1.2 有条件分支3.2 比较指令3.2.1 比较指令的作用3.2.2 比较指令的使用方法3.3 位操作指令3.3.1 与操作3.3.2 或操作3.3.3 异或操作四、arm 汇编优化技巧4.1 减少存取操作4.2 使用预处理器4.3 循环展开4.4 减少分支操作4.5 使用内联汇编五、arm 汇编的应用案例5.1 arm 汇编在嵌入式系统中的应用5.2 arm 汇编在图形处理中的应用5.3 arm 汇编在操作系统中的应用六、总结6.1 arm 汇编的优势和不足6.2 arm 汇编的未来发展6.3 arm 汇编学习的建议arm 汇编指令一、arm 汇编简介1.1 什么是 arm 汇编arm 汇编是一种底层的编程语言,用于直接操作处理器的指令集。
它与高级语言相比更接近机器语言,能够更加精细地控制硬件资源。
arm 汇编通常用于需要对性能和资源进行高度优化的场景,如嵌入式系统开发、驱动程序编写和底层图形处理等。
1.2 arm 汇编的应用领域arm 汇编广泛应用于各种领域,包括嵌入式系统、移动设备、游戏开发、图形处理、操作系统等。
由于 arm 汇编的高效性和精确性,它能够在这些领域中发挥重要作用。
例如,在嵌入式系统中,arm 汇编可以直接访问硬件资源,提供更高的执行效率和更低的资源消耗。
1.3 arm 汇编与高级语言的对比arm 汇编与高级语言相比有着明显的区别。
在高级语言中,程序员不需要关注底层的机器细节,只需要编写抽象的代码即可。
嵌⼊式ARM汇编详解⽂章⽬录ARM嵌⼊式开发中经常会涉及到汇编指令的知识,这⾥就总结⼀下最常⽤的⼏种ARM汇编指令。
零.预备知识这⾥我们主要学习ARM的汇编指令,这些预备知识只是作为⼀个了解。
1.ARM与X86要了解ARM,最好的是使⽤对⽐的⽅法。
ARM是⼀款32位的低功耗RSIC(精简指令集)微处理器。
我们常了解的CPU可能就是办公中常⽤到的X86架构的计算机,X86使⽤的就是CSIC(复杂指令集),⽐如很有名的Intel处理器,下⾯就通过分析⼀下ARM架构与X86架构的区别来认识ARM:项⽬ARM X86指令集RSIC精简指令集CSIC复杂指令集功耗低功耗超⾼性能⽤途移动端的⽼⼤PC端的⽼⼤解码并⾏并⾏ARM的特点是:体积⼩、低功耗、⾼性能⽀持Thumb(16位)和ARM(32位)双指令指令执⾏效率⾼寻址⽅式简单指令长度固定2.ARM中指令的执⾏由于ARM采⽤RSIC架构,所以CPU本⾝不能直对内存进⾏操作,⽽是先将内存中数据加载到CPU中的寄存器,然后对寄存器中的值进⾏处理。
ARM中指令的执⾏遵循流⽔线形式,众所周知,CPU执⾏指令都是从内存中进⾏取指令、分析指令、执⾏指令的。
⼀阶段持从内存中取回的指令,第⼆阶段开始解码,⽽第三阶段实际执⾏它。
故此,程序计数器总是超出当前执⾏的指令两个指令。
ARM处理指令时,⽐如要连续执⾏三条指令:a、b、c,那么ARM在执⾏a指令的同时,已经在解析b指令了,同时有在内存中取c指令。
所以pc寄存器中的地址⼀般是当前指令地址+8(Byte),因为ARM是32位CPU,所以⼀次处理的指令是4字节,所以第三条指令的地址就是当前指令的地址+8。
在⼤概说⼀下RSIC吧,RSIC将ARM要执⾏的操作以最基本的指令实现。
换句话说,如果⼈们是在RSIC指令集下执⾏跑步时,⼤脑(CPU)对⼈体发出的指令就是:先迈左脚、再迈右脚、再迈左脚、再迈右脚…将跑步这条指令细化为每⼀个最基本的操作。
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960/*************************************************************************************************************************文件头************************************** 《ARM体系结构与编程》读书笔记 ** ** 成功的步伐在您不懈的努力中加快! ** **源自: METAL MAX, CUIT **起始日期:01/25/08 **当前版本:Version0.08.0125 ** **备注: 1.这是2008春节回家期间阅读《ARM体系结构与编程》这部作品的时候记载下来的。 小小的东西凝聚了我不少的心血(汗...书又不是我写的,我只是负责抄写了一遍, 有些内容给省略了...),让我体会到要真真正正做个像样的东西很不容易,但是, 相信点点滴滴的积累,正所谓是:不积跬步,无以至千里;不积小流,无以成江海!
2.由于刚接触ARM处理器,并不熟悉其中的一些细节问题,所有在做笔记的时候对有 西理解不是很透彻,甚至会又错误。有些地方加入了自己的一些东西(主要是一些 的理解和自己做的图表)。
3.由于本人水平太菜的缘故,排版不工整,存在错别字等问题,见谅!更希望有心人 忙修改和完善,众志成城!
4.本文档您可以任意的修改(严禁恶搞!^_^)和传播,引用文档的部分和全部内容请 本文件的文件头,如果您是有心人修改或完善了其中的部分内容,请一定保留您的 改记录(修改日期、版本、修改人以及修改点等),并将其归入文件头中。
5.编辑时使用了三号新宋体字体以及演示版的Editplus2,TABLE缩进为4,制表符代 空格。
6.非常喜欢我的事业,也很希望能和大家一起学习很进步,当然交流是前提! Email : liyangbbs@126.com QQ: 249456711日志: 01/25/08 - 02/10/08 Version0.08.0125 METL MAX
**********************************************************************************
2008-1-25一、前言: 嵌入式系统: 是指以应用为中心,以计算机技术为基础,软件和硬件可以裁剪, 适应应用系统对功能的、可靠性、体积和功耗严格要求的专用计算 机系统。
ARM: ACRON RISC COMPUTER <---> ADVANCED RISC COMPUTER ARM技术的发展历程:第一片ARM处理器是在1983年10月到1985年4月位于英国剑桥的 ACRON COMPUTER公司开发的。于1985年4月26日在ACRON公司进 行了首批ARM样片测试并成功运行了测试程序。 1990年11月ARM公司在英国剑桥的一个谷仓里成立最初只有12人。
第一章、ARM体系的结构和特征。CHAP1.1AMR芯片具有RISC体系的一般特点,如: 1.具有大量的寄存器。2.绝大部分的操作就在寄存器中进行,通过LOAD,STORE的体系结构在内存和寄存 器之间传递数据。3.寻找方式简单。
我的读书笔记——ARM体系结构与编程.txt2008-2-19 20:54页 1 共 726162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191204.采用固定长度的指令格式。 AMR芯片具有的一些特别的技术: 1.在同一条数据处理指令中包含 算术逻辑处理单元 和 移位处理。2.使用地址自动增加(减少)来优化程序中循环处理。3.LOAD/STORE指令可以批量传输数据,从而提高数据传输的效率。4.所有指令都可以根据前面指令的执行结果,决定是否执行,以提高指令的执行 效率。
CHAP1.2AMR体系结构的版本和命名方法。 迄今为止,ARM体系结构共定义了6个版本,版本号分别为1-6。
CHAP1.2.1ARM体系的结构版本: 1.版本1 : V1体系 *处理乘法指令以外的基本数据处理指令。*基于字节、字和多字的LOAD/STORE指令。*包括子程序BL在内的跳转指令。*共操作系统使用的软件中断指令:SWI。 *本版本总地址空间是26位,目前已经不在使用。(2^26 = 64MB) 2.版本2 : V2体系 *乘法指令和乘加指令。*支持协处理器的指令。*对于FIQ模式,提供额外的两个备份寄存器。*SWP指令及SWPB指令。 *本版本总地址空间是26位,目前已经不在使用。 3.版本3 : V3体系 *地址扩展到32位,除去3G版本以外的其他版本是向前兼容的, 支持26位地址空间。 *程序状态寄存器从原来的R15移动到新的专用寄存器: Current Program Status Register *增加了SPSR用于异常中断程序时,保存被中断程序的状态。 Saved Program Status Register *增加了两种处理器模式,是操作系统代码可以方便地使用数据访问 中止异常、指令预取异常和未定义指令异常。 *增加了MSR,MRS。用于访问CPSR,SPSR寄存器。*修改了原来版本中的从异常返回的指令。 4.版本4 : V4体系 *半字的读取和写入指令。*读取(LOAD)带符号的字节和半字数据的指令。*增加了T变种,可以使处理器切换到Thumb状态。*增加了处理器的特权模式。在该模式下使用的是用户模式下的寄存器。*版本4中明确定义了哪些指令会引起未定义指令异常。版本4不再强制 要求于以前的26位地址空间兼容。 5.版本5 : V5体系 *提高了T变种中ARM/THUMB混合使用的效率。*对T变种的指令和非T变种的指令使用相同的代码生成技术。*增加了前导零计数(COUNT LEADING ZEROS)指令,该指令可以使整数除法 和中断优先级排队操作的更为有效。*增加了软件断点指令。*为协处理器提供了更多的可选择的指令。*更加严格的定义了乘法指令堆条件标志位的影响。 6.版本6 : V6体系 *2001年发布,其主要特点是增加了SIMD功能扩展。它适合永电池供电 的高性能便携式设备。
CHAP1.2.2 ARM体系的变种: 1.T(THUMB)。 2.M(长乘法指令)。 3.E(增强型DSP指令)。
我的读书笔记——ARM体系结构与编程.txt2008-2-19 20:54页 2 共 72121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180 4.J(JAVA加速器JAZELLE)。 5.SIMD(ARM多媒体扩展)。
CHAP1.2.3 ARM/THUMB体系版本的命名格式 表示AMR/THUMB体系版本的字符串是由下面几个部分组成的:
ARM v5 T exP ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┖要排除的功能 ┃ ┃ ┖变种名称 ┃ ┖版本号 ┖ARM字符串
1.ARM字符串。 2.ARM版本号。 3.X表示排除某种功能。
2008-1-26CHAP1.3 ARM处理器系列 1.ARM7: ARM7TDMI,ARM7TDMI-S,ARM7EJ-S,ARM720T-4 AMR7 T D M I - S ┃ ┃┃┃┃ ┃ ┃ ┃┃┃┃ ┖可综合(SYNTHESIZABLE)版本软核 ┃ ┃┃┃┖EmbededICE硬件调试仿真功能 ┃ ┃┃┖64位乘法指 ┃ ┃┖片上调试 ┃ ┖THUMB指令 ┖AMR7
2.ARM9: ARM9系列处理器使用了ARM9TDMI内核,其中包含了16位的THUMB指令集。
3.ARM9E: ARM9E系列处理器使用单一的处理器内核提供了微控制器、DSP、JAVA应用 系统的解决方案,从而极大的减小了芯片的大小及复杂程度,降低了功耗 缩短了产品面世的时间。
4.ARM10E: ARM10E系列处理器有高性能和低功耗的特点。其采用了新的节能模式,提 供了64位的读取和写入体系,包含向量操作的满足IEEE754的浮点运算协处 理器,系统集成更加方便,拥有完整的硬件和软件可开发工具。 包含:ARM1020E,ARM1022E,ARM1026EJ-S
5.SECURCORE: 提供了基于高性能的32位RISC技术的安全解决方案。 包含:SECURCORE SC100, SECURCORE SC110, SECURCORE SC200, SECURCORE SC210。
CHAP1.4 ARM处理器模式 7种运行模式: 1.USR(USER). 2.FIQ(FAST INTERRUPT RQUEST) 3.IRQ(INTERRUPUT RQUEST) 4.SVE(SUPERVISOR) 5.ABT(ABORT) 6.UND(UNDEFINED) 7.SYS(SYSTEM)
我的读书笔记——ARM体系结构与编程.txt2008-2-19 20:54页 3 共 72