|
|
|
|
移动端

1.5.2 状态寄存器

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

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

【新品产上线啦】51CTO播客,随时随地,碎片化学习

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
分享:
大家都在看
猜你喜欢

读 书 +更多

Visual C++编程从基础到实践

Visual C++ 6.0是Microsoft公司的Visual Studio开发组件中最强大的编程工具,利用它可以开发出高性能的应用程序。本书由浅入深,从基础到实...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊