您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 企业文档 > 读书笔记----ARM汇编 编程
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960/*************************************************************************************************************************文件头**************************************《ARM体系结构与编程》读书笔记****成功的步伐在您不懈的努力中加快!****源自:METALMAX,CUIT**起始日期:01/25/08**当前版本:Version0.08.0125****备注:1.这是2008春节回家期间阅读《ARM体系结构与编程》这部作品的时候记载下来的。小小的东西凝聚了我不少的心血(汗...书又不是我写的,我只是负责抄写了一遍,有些内容给省略了...),让我体会到要真真正正做个像样的东西很不容易,但是,相信点点滴滴的积累,正所谓是:不积跬步,无以至千里;不积小流,无以成江海!2.由于刚接触ARM处理器,并不熟悉其中的一些细节问题,所有在做笔记的时候对有西理解不是很透彻,甚至会又错误。有些地方加入了自己的一些东西(主要是一些的理解和自己做的图表)。3.由于本人水平太菜的缘故,排版不工整,存在错别字等问题,见谅!更希望有心人忙修改和完善,众志成城!4.本文档您可以任意的修改(严禁恶搞!^_^)和传播,引用文档的部分和全部内容请本文件的文件头,如果您是有心人修改或完善了其中的部分内容,请一定保留您的改记录(修改日期、版本、修改人以及修改点等),并将其归入文件头中。5.编辑时使用了三号新宋体字体以及演示版的Editplus2,TABLE缩进为4,制表符代空格。6.非常喜欢我的事业,也很希望能和大家一起学习很进步,当然交流是前提!Email:liyangbbs@126.comQQ:249456711日志:01/25/08-02/10/08Version0.08.0125METLMAX**********************************************************************************2008-1-25一、前言:嵌入式系统:是指以应用为中心,以计算机技术为基础,软件和硬件可以裁剪,适应应用系统对功能的、可靠性、体积和功耗严格要求的专用计算机系统。ARM:ACRONRISCCOMPUTER---ADVANCEDRISCCOMPUTERARM技术的发展历程:第一片ARM处理器是在1983年10月到1985年4月位于英国剑桥的ACRONCOMPUTER公司开发的。于1985年4月26日在ACRON公司进行了首批ARM样片测试并成功运行了测试程序。1990年11月ARM公司在英国剑桥的一个谷仓里成立昀初只有12人。第一章、ARM体系的结构和特征。CHAP1.1AMR芯片具有RISC体系的一般特点,如:1.具有大量的寄存器。2.绝大部分的操作就在寄存器中进行,通过LOAD,STORE的体系结构在内存和寄存器之间传递数据。3.寻找方式简单。我的读书笔记——ARM体系结构与编程.txt2008-2-1920: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移动到新的专用寄存器:CurrentProgramStatusRegister*增加了SPSR用于异常中断程序时,保存被中断程序的状态。SavedProgramStatusRegister*增加了两种处理器模式,是操作系统代码可以方便地使用数据访问中止异常、指令预取异常和未定义指令异常。*增加了MSR,MRS。用于访问CPSR,SPSR寄存器。*修改了原来版本中的从异常返回的指令。4.版本4:V4体系*半字的读取和写入指令。*读取(LOAD)带符号的字节和半字数据的指令。*增加了T变种,可以使处理器切换到Thumb状态。*增加了处理器的特权模式。在该模式下使用的是用户模式下的寄存器。*版本4中明确定义了哪些指令会引起未定义指令异常。版本4不再强制要求于以前的26位地址空间兼容。5.版本5:V5体系*提高了T变种中ARM/THUMB混合使用的效率。*对T变种的指令和非T变种的指令使用相同的代码生成技术。*增加了前导零计数(COUNTLEADINGZEROS)指令,该指令可以使整数除法和中断优先级排队操作的更为有效。*增加了软件断点指令。*为协处理器提供了更多的可选择的指令。*更加严格的定义了乘法指令堆条件标志位的影响。6.版本6:V6体系*2001年发布,其主要特点是增加了SIMD功能扩展。它适合永电池供电的高性能便携式设备。CHAP1.2.2ARM体系的变种:1.T(THUMB)。2.M(长乘法指令)。3.E(增强型DSP指令)。我的读书笔记——ARM体系结构与编程.txt2008-2-1920:54页2共721211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791804.J(JAVA加速器JAZELLE)。5.SIMD(ARM多媒体扩展)。CHAP1.2.3ARM/THUMB体系版本的命名格式表示AMR/THUMB体系版本的字符串是由下面几个部分组成的:ARMv5TexP┃┃┃┃┃┃┃┖要排除的功能┃┃┖变种名称┃┖版本号┖ARM字符串1.ARM字符串。2.ARM版本号。3.X表示排除某种功能。2008-1-26CHAP1.3ARM处理器系列1.ARM7:ARM7TDMI,ARM7TDMI-S,ARM7EJ-S,ARM720T-4AMR7TDMI-S┃┃┃┃┃┃┃┃┃┃┃┖可综合(SYNTHESIZABLE)版本软核┃┃┃┃┖EmbededICE硬件调试仿真功能┃┃┃┖64位乘法指┃┃┖片上调试┃┖THUMB指令┖AMR72.ARM9:ARM9系列处理器使用了ARM9TDMI内核,其中包含了16位的THUMB指令集。3.ARM9E:ARM9E系列处理器使用单一的处理器内核提供了微控制器、DSP、JAVA应用系统的解决方案,从而极大的减小了芯片的大小及复杂程度,降低了功耗缩短了产品面世的时间。4.ARM10E:ARM10E系列处理器有高性能和低功耗的特点。其采用了新的节能模式,提供了64位的读取和写入体系,包含向量操作的满足IEEE754的浮点运算协处理器,系统集成更加方便,拥有完整的硬件和软件可开发工具。包含:ARM1020E,ARM1022E,ARM1026EJ-S5.SECURCORE:提供了基于高性能的32位RISC技术的安全解决方案。包含:SECURCORESC100,SECURCORESC110,SECURCORESC200,SECURCORESC210。CHAP1.4ARM处理器模式7种运行模式:1.USR(USER).2.FIQ(FASTINTERRUPTRQUEST)3.IRQ(INTERRUPUTRQUEST)4.SVE(SUPERVISOR)5.ABT(ABORT)6.UND(UNDEFINED)7.SYS(SYSTEM)我的读书笔记——ARM体系结构与编程.txt2008-2-1920:54页3共72181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240CHAP1.5ARM寄存器介绍37个寄存器:第一类:31个通用寄存器,包括PC在内。都是32位的。第二类:6个状态寄存器,都是32位的目前只使用了一部分的位。┏━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓┃user┃PrivilegedMode┃┃mode┣━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┫┃┃system┃excepution┃┣━━━━╋━━━━╋━━━━┳━━━━┳━━━━┳━━━━┳━━━━┫┃usr┃sys┃svc┃abt┃und┃irq┃fiq┃┣━━━━┻━━━━┻━━━━┻━━━━┻━━━━┻━━━━┻━━━━┫┃R0----R7┃┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━┫┃R8----R12┃R8_fiq┃┣━━━━━━━━━┳━━━━┳━━━━┳━━━━┳━━━━╋━━━━┫┃R13┃R13_svc┃R13_abt┃R13_und┃R13_irq┃R13_fiq┃┣━━━━━━━━━╋━━━━╋━━━━╋━━━━╋━━━━╋━━━━┫┃R14┃R14_svc┃R14_abt┃R14_und┃R14_irq┃R14_fiq┃┣━━━━━━━━━┻━━━━┻━━━━┻━━━━┻━━━━┻━━━━┫┃PC┃┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫┃CPSR┃┣━━━━━━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┫┃┃SPSR_svc┃SPSR_abt┃SPSR_und┃SPSR_irq┃SPSR_fiq┃┗━━━━━━━━━┻━━━━┻━━━━┻━━━━┻━━━━┻━━━━┛寄存器的讲解:R0-R7:未备份寄存器。通过上表可以看出,这几个寄存器在不同模式下使用的都是同样的物理寄存器。所以对它们进行操作时都要注意备份保存。R13:这个寄存器一般用来做堆栈的指针。个种异常模式都拥有自己的堆栈指针,所以在进行处理器初始化的时候要对每种模式的堆栈区域进行。R14(LR):顾名思义,连接寄存器。用来保护程序返回地址。可以通过下面的两种方式来实现子程序的返回:1.MOVPC,LR2.BXLR(注意:BX指令会根据PC昀后一位来确定是否要进入THUMB)R15(PC):1.由于ARM处理器采用了流水线机制
本文标题:读书笔记----ARM汇编 编程
链接地址:https://www.777doc.com/doc-6067152 .html