|
|
51CTO旗下网站
|
|
移动端

1.5.2 状态寄存器

《ARM嵌入式系统编程与优化》第1章Linux/ARM嵌入式平台,本章介绍如何使用GCC编译器、汇编器和连接器来编写和执行独立的汇编语言程序,以及如何将一个C语言代码和汇编语言代码合起来,以验证汇编代码子程序的正确性。本节为大家介绍状态寄存器。

作者:梁元宇 译来源:机械工业出版社|2017-09-26 19:03

【大咖·来了 第7期】10月24日晚8点观看《智能导购对话机器人实践》

1.5.2 状态寄存器

ARM v6/v7有一个名为CPSR(当前程序状态寄存器)的状态寄存器,它有4个条件标志位:N、Z、C和O。这些位可以用于后续指令的条件执行。

位是根据最近执行的包含特殊“s”后缀的算术逻辑单元指令设置的。例如,“adds”指令将修改状态位,但“add”指令将不会改变。

几乎所有ARM指令都可以包含一个可选的条件码,该条件码用来决定指令是否会被执行或跳过。换言之,若一个指令的条件码为假,将不会改变处理器的状态,例如写一个结果寄存器去改变程序计数器(PC)。

例如,如果在CPSR中的Z位被设置,ldreq指令才会执行——如果最近的计算指令导致结果为零,才会出现这种情况。

例如,下面的序列:

仅当寄存器r2的新值是零时,才将减去寄存器r2的内容并且存储到寄存器r3。

比较指令(cmp)可以用来设置状态位,且不会产生其他额外影响。

例如:

只有在寄存器r2和r3的内容一致的情况下,才将其存储到寄存器r4。

当条件码和“s”后缀连着出现时,条件码是被优先考虑的,例如:

条件后缀的完整列表见表1-1。

表1-1 条件码


喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:365934973

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

订阅专栏+更多

活学活用 Ubuntu Server

活学活用 Ubuntu Server

实战直通车
共35章 | UbuntuServer

218人订阅学习

Java EE速成指南

Java EE速成指南

掌握Java核心
共30章 | 51CTO王波

83人订阅学习

Mysql DBA修炼之路

Mysql DBA修炼之路

MySQL入门到高阶
共24章 | 武凤涛

472人订阅学习

读 书 +更多

基于Project2003的项目管理

本书的上一版本《基于Project 2002的项目管理》上市以后得到了读者的欢迎,为了更好地将Project 2003新版本的应用介绍给读者,我们重新进行...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊

51CTO服务号

51CTO播客