ARM汇编基础

来源:互联网 发布:微贷网高收益网络理财 编辑:程序博客网 时间:2024/05/23 19:18

ARM体系平台手册笔记02

GE[3:0]标志位

简介    在ARMv6中,SIMD指令使用位[19:16]作为结果的单个字节或半字的大于或等于(GE)标志。您可以使用这些标志来控制以后的SEL指令,有关详细信息,请参阅第A4-127页的SEL            设置规则有以下三种:    指令为半字操作:        根据上半字计算的结果,将GE [3:2]设置或清除        根据下半字计算的结果,将GE [1:0]设置或清除       指令位byte操作:        根据Top byte计算的结果,将GE [3]设置或清除        根据second byte计算的结果,将GE [2]设置或清除        根据third byte计算的结果,将GE [1]设置或清除        根据bottom byte计算的结果,将GE [0]设置或清除    如果相应计算的结果如下,则每个位都被置位(否则清除):        对于无符号字节加法,如果结果大于或等于128        对于无符号半字加法,如果结果大于或等于65536        对于无符号字节减法,如果结果大于或等于0        对于有符号运算,如果结果大于或等于0

中断使能位

简介:A I F是中断使能标志位A标志位:    设置时禁用不精确的数据中止。这仅在ARMv6及更高版本中可用。在早期版本中,CPSR和SPSR的位[8]必须被视为保留位I标志位:    设置后禁用IRQ中断              F标志位:    设置后禁用FIQ中断

模式标志位

简介:        M[4:0]用来指示模式标志位。    M[4:0]              Mode               Accessible registers    0b10000             User               PC, R14 to R0, CPSR    0b10001             FIQ                PC, R14_fiq to R8_fiq, R7 to R0, CPSR, SPSR_fiq    0b10001             IRQ                PC, R14_irq, R13_irq, R12 to R0, CPSR, SPSR_irq    0b10011             Supervisor         PC, R14_svc, R13_svc, R12 to R0, CPSR, SPSR_svc    0b10111             Abort              PC, R14_abt, R13_abt, R12 to R0, CPSR, SPSR_abt    0b11011             Undefined          PC, R14_und, R13_und, R12 to R0, CPSR, SPSR_und    0b11111             System             PC, R14 to R0, CPSR (ARMv4 and above)    并非模式位的所有组合都定义了一个有效的处理器模式,只能使用那些明确描述的组合

T和J标志位

简介:T和J位选择当前指令集    J T Instruction set    0 0 ARM    0 1 Thumb       T为1时是Thumb指令集    1 0 Jazelle    1 1 RESERVED说明:Jazelle操作码执行的硬件加速可以在ARMv5TEJ和ARMv6及更高版本上实现(实际上是给JVMs提供加速的)。在这些架构变体中,当硬件加速器存在并启用时,BXJ指令用于从ARM状态切换到Jazelle状态。如果硬件加速器禁用或不存在,则BXJ指令的行为为BX指令,J位保持清零。有关详细信息,请参阅第A2-53页上的“Jazelle扩展”

异常

    ARM架构支持七种类型的异常。表A2-4列出了用于处理每种类型的异常类型和处理器模式。    当异常发生时,强制执行从与异常类型相对应的固定内存地址。这些固定地址称为异常向量    Exception type                          Mode         VE(a)       Normal address    High vector address    Reset                                   Supervisor             0x00000000        0xFFFF0000    Undefined instructions                  Undefined              0x00000004        0xFFFF0004    Software interrupt (SWI)                Supervisor             0x00000008        0xFFFF0008    Prefetch Abort (instruction fetch memory abort) Abort          0x0000000C        0xFFFF000C    Data Abort (data access memory abort) Abort                    0x00000010        0xFFFF0010    IRQ (interrupt)                         IRQ           0        0x00000018        0xFFFF0018                                                          1        IMPLEMENTATION DEFINED    FIQ (fast interrupt)                    FIQ           0        0x0000001C        0xFFFF001C                                                          1        IMPLEMENTATION DEFINED    VE说明: VE = vectored interrupt enable (CP15 control); RAZ when not implemented                                                       
0 0
原创粉丝点击