操作影响cpsr的条件码的指令(teq等),与影响关系
来源:互联网 发布:淘宝1元秒杀攻略 编辑:程序博客网 时间:2024/05/16 14:47
算术逻辑运算指令:(ADD、ADC、SUB、SBC、RSB、RSC、AND、ORR、EOR、BIC)完成常 用的算术与逻辑的运算,该类指令不但将运算结果保存在目的寄存器中。
当这些指令后面加了S(如ADDS时),指令同时更新CPSR中的相应条件标志位。
比较指令 (CMP、CMN、TST、TEQ)不保存运算结果,只更新CPSR中相应的条件标志位。
它们总是会影响CPSR条件标志位.
2、CPSR格式及说明:
-加法运算(包括CMP):当运算结果产生了进位时(无符号数溢出),C=1,否则C=0
-减法运算(包括CMP):当运算时产生了借位时(无符号数溢出),C=0,否则C=1
-对于包含移位操作的非加/减运算指令,C为移出值的最后一位
-对于其它的非加/减运算指令,C的值通常不会改变V可以有2种方法设置V的值:
-对于加减法运算指令,当操作数和运算结果为二进制的补码表示的带符号数时,V=1表示符号位溢出
-对于其它的非加/减运算指令,V的值通常不会改变Q
IRQ中断禁止位。置1时,禁止IRQ中断
FFIQ中断禁止位。置1时,禁止FIQ中断
T该位反映处理器的运行状态。当该位为1时,程序运行于THUMB状态,否则运行于ARM状态。该信号反映在外部引脚TBIT上。在程序中不得修改CPSR中的TBIT位,否则处理器工作状态不能确定。
这几位是模式位,这些位决定了处理器的运行模式
CPSR寄存器控制位设置方法:
其中cpsr_c代表的是这32位中的低8位,也就是控制位
当你看到有些程序里这样写
msr cpsr_c 0xd2 使用0xd2做为值来修改cpsr,但只修改cpsr的控制位。也就是[5:7]位。
APSR(CPSR)与condition的关系图:
条件码可以加在指令中(上表中的Mnemonic extension),做为条件判断执行,类似C语言中的if语句。
例:
b指令加上条件码, BEQ label ( 注意存储在跳转指令中的实际值是相对当前PC 值的一个偏移量,而不是一个绝对地址,它的值由汇编器来计算(参考寻址方式中的相对寻址)。它是 24 位有符号数,左移两位后有符号扩展为 32 位,表示的有效偏移为 26 位(前后32MB 的地址空间)。
表示当之前的某条指令导致的条件码z=1是,跳转到label处执行。
只要条件码z不发生改变,就可以一直使用这种条件码,比果这条指令后又跟了几条
bicner0, r0, #0x1f 表示如z==0, 将r0的[0:4]位清空。
orrner0, r0, #0x13表示如z==0, 将r0位或上0x13后的值设到r0
- 操作影响cpsr的条件码的指令(teq等),与影响关系
- 移位操作对CPSR的影响
- ARM条件码与CPSR标志位的关系——cmp MOVLS与MOVHI 指令
- 影响CPSR状态寄存器的ARM汇编指令--总结
- 指令+s对cpsr中标志位的影响
- ARM条件码与CPSR标志位的关系
- ARM条件码与CPSR标志位的关系
- ARM条件码与CPSR标志位的关系
- STM32 xPSR影响的条件指令
- 影响化学平衡的条件
- HC08传送类指令操作对CCR的影响如何?
- .fnstart,.fnend等伪操作对assembler的影响?
- 不充份的连接条件带来的影响
- 索引对查询条件顺序的影响
- 索引对查询条件的影响
- 索引对查询条件顺序的影响
- 索引对查询条件顺序的影响
- 索引对查询条件顺序的影响
- linux内存布局及页面映射(x86架构!与arm在某些内存使用上有差异)
- arm linux 内存分布总结
- source insight 加入arm汇编文件
- Redis哨兵架构的相关基础知识的讲解
- GNU ARM汇编伪操作(Directives) 命令集
- 操作影响cpsr的条件码的指令(teq等),与影响关系
- 汇编程序为什么在调用子函数时会保护r12寄存器
- movw与movt
- c# 从服务器下载资源
- mmu常 见terms
- java进修之路
- 什么是write-allocate policy?
- 关于高软用两个账户提交线上作业的说明
- 4.4 To be inclusive or not to be 1