Assembly 更改CPSR保留位

Assembly 更改CPSR保留位,assembly,arm,cpu-registers,Assembly,Arm,Cpu Registers,尽管我知道所有ARM参考中都有下面的注释,但我想知道是否有任何方法可以更改CPSR中的保留位?如何更改保留位以生成所需的值 提前谢谢大家, 注 为了与未来的ARM处理器兼容,请勿更改程序状态寄存器的保留位。更改CPSR时使用读修改写操作 您引用的文档中的关键词包括: 与未来的ARM处理器兼容 这意味着您无法知道这些位在特定CPU中的含义。您可能有一个CPU,它是在写入此文本后产生的,其中一个保留位具有特殊含义 如果这个特殊的意思是“执行CPU重置”,那么在试图更改这些位时,您将使CPU崩溃 对于

尽管我知道所有ARM参考中都有下面的注释,但我想知道是否有任何方法可以更改CPSR中的保留位?如何更改保留位以生成所需的值

提前谢谢大家,

注 为了与未来的ARM处理器兼容,请勿更改程序状态寄存器的保留位。更改CPSR时使用读修改写操作


您引用的文档中的关键词包括:

与未来的ARM处理器兼容

这意味着您无法知道这些位在特定CPU中的含义。您可能有一个CPU,它是在写入此文本后产生的,其中一个保留位具有特殊含义

如果这个特殊的意思是“执行CPU重置”,那么在试图更改这些位时,您将使CPU崩溃


对于目前市场上的CPU,我认为“dwelch”是正确的:这些位只是硬连接到某个值,不能更改。

这些位后面很可能没有触发器来存储任何内容。当您尝试msr cpsr、r0或任何寄存器,但在cpsr之后没有添加任何_内容时发生了什么?那么r0夫人,cpsr要回读吗?你能改变这些位吗?你想在这里实现什么?现在比较一下ARM968——当有人在v7内核上运行你的代码时,你的“期望值”有多少状态会被破坏?也很可能其中一个或一些有一个坏掉的特性没有被删除,你不应该弄乱它。除非你能访问到你不知道的源代码,否则我无法想象你是如此渴望存储,以至于你不能在某个地方的ram中留出一把位,或者在你不使用的外设中找到其他读写寄存器,你可以从中获取一些位。无法保证,即使这些位后面有存储空间,它们也会传递给其他PSR,如已知的cpsr位。对于您正在使用的特定芯片和该芯片的版本/步进,只要您尝试并发现它可以工作,这并不意味着该芯片的未来步进行为将与该供应商或其他arm内核的其他芯片相同。所以,如果你真的需要它,而且它看起来很有效(需要大量的测试才能实现),不要在没有额外工作的情况下移植代码。