软件逆向工程原理与实践第3章ARM体系结构.pptxVIP

软件逆向工程原理与实践第3章ARM体系结构.pptx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第3章 ARM体系结构; 3.1 ARM基本特性 ;   (2)??ARM的内存访问方式与x86存在明显差别,使用加载-存储(LDR/STR)的内存访问方式,而非x86广泛使用的MOV指令。加载和存储的寻址均可由寄存器内容和指令域 决定。   (3) 统一而定长的指令域,能够简化对指令的解码。   (4) 在每一条数据处理指令中,同时考虑使用算数逻辑单元(ALU)和移位器(shifter),最大化对ALU和移位器的使用。   (5) 引入了自增和自减寻址模式,简化程序循环的实现。   (6) 为增大数据吞吐率,允许加载和存储多条指令。   (7) 为增大执行吞吐率,所有指令均支持条件执行。 ; 3.1.1 ARM的处理器模式   ARM有七种不同的处理器模式,具体如表3-1所示。模式切换可由软件控制,或由外部的中断或异常处理引起。大多数应用程序在用户模式下运行,当处理器处于用户模式时,程序不能访问一些被保护的系统资源,也不能进行模式切换,除非引起一个异常。处理器模式决定了运行于该模式下的程序能够访问的寄存器集合。 ;;   除用户模式之外的其他模式均可称为特权模式。在这些模式下,程序可以访问所有的系统资源,也可以自由地切换模式。在这些特权模式中,FIQ、IRQ、SVC、ABT、UND这五种模式合称为异常模式。只有在特定的异常发生时,才能进入这五种模式。每一种异常模式都有一些额外的寄存器以避免与用户模式状态产生冲突。异常的发生不会导致进入另一个特权模式SYS。实际上,这一特权模式是用于执行需要访问操作系统资源的特权任务的。在SYS特权模式下,能够使用的寄存器与在用户模式下相同。 ; 3.1.2 处理器状态   在ARM体系结构下,处理器状态特指由ARM指令集或Thumb指令集所决定的状态。Thumb指令集是ARM指令集的一个重编码的子集。Thumb状态指与Thumb指令集相对应的处理器指令状态。在Thumb状态下,指令长度通常是ARM状态下指令长度的一半,因此使用Thumb指令集通常能够达到更高的代码密度(混合使用16位/32位指令的代码长度短于全部使用32位指令的代码)。 ;   Thumb指令集相对于ARM指令集受到以下两方面限制:   (1)??Thumb代码可能需要更多的指令完成同一项任务,因此在需要最大化性能时,应优先使用ARM状态的指令;   (2) ?Thumb指令集不包括一些异常处理指令,因此必须使用ARM状态指令进行顶层的异常处理。 ;   由于以上原因,Thumb指令必须与特定版本的ARM指令配合使用。Thumb指令和ARM指令的助记符相同,在32位Thumb指令后加.W后缀以示区分。   ARM核心启动时,多数情况进入ARM状态并保持在此状态,直到显式或隐式地切换到Thumb状态。若当前程序状态寄存器(CPSR)中的T标识位被置位,则处理器状态处于Thumb状态。 ; 3.1.3 内存模型   ARM体系结构采用单一的平面内存模型,地址范围为0~232-1。这一地址空间可以被看作230个32位字,每个字的地址都是字对齐的,即地址可以被4整除;也可以将这一地址空间看作231个16位的半字,每个半字都是半字对齐的,即地址可以被2整除。一些ARM体系结构还向后兼容早期的226字节地址空间。   地址计算使用一般的整数指令计算。如果地址计算的结果相对于地址范围而言出现了上溢或者下溢,则需要进行绕回(wrap around),即地址计算结果需要模232。 ; 3.2 ARM寄存器与数据类型 ; 3.2.1 ARM寄存器   ARM的可见通用寄存器为16个,R0~R15,这些寄存器可以被任意的非特权指令所使用。这些通用寄存器可以分为三组:   (1) 未分组寄存器(unbanked register):R0~R7。这8个通用寄存器,不管处在哪个处理器模式,都指向同样的32位物理寄存器。 ;   (2) 分组寄存器(banked register):R8~R14。这7个通用寄存器,会根据当前的处理器模式,引用到不同的物理寄存器。当我们需要使用某个具体的物理寄存器时,需要用更特殊的名称去使用它们。   (3) 程序计数器(program counter):R15。 ;   以下将具体介绍重要的通用寄存器及状态寄存器的功能。   1.程序计数器   通用寄存器R15又称程序计数器(Program Counter,PC)。由于ARM的流水线设计,该寄存器通常指向相对于当前被执行的指令的两条指令之后,即,在ARM状态下,PC=当前指令地址+8字节(两条ARM指令之后);在Thumb状态下,PC=当前指令地址+4字节(两条16位Thumb指令之后)。在ARM状态下,代码可以直接读写PC寄存器。 ;   2.链接寄存器

文档评论(0)

水风波 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档