【发布时间】:2017-11-08 03:58:51
【问题描述】:
我正在学习微控制器课程,我们正在学习 ARM 处理器架构。我们目前正在讨论数据处理指令(算术、比较、逻辑和数据移动)。我了解算术比较和数据移动指令的概念,以及它们在编写代码时的工作原理。但是,我不明白逻辑指令是如何工作的。在我们的讲座中,我们得到了 3 个例子,我一个都没看懂。
示例 1: AND r0, r1, r2 ;r1 AND r2, 将结果存入 r0 (这个我有点理解,但不是很明白。如果r1和r2不同,是否会比较32位数字并比较它们并将结果存储在r0中?例如,如果R1是0101,R2是1111,R0然后将等于 0101,这是因为它需要两个都为 1 才能正确设置该位?)
示例 2: BICEQ r2, r3, #7 ;如果 Z=1,清除 r3 的 3 个右位,将结果存入 r2 (这个我完全不明白。清除 3 个正确位是什么意思,这 3 个正确位是从哪里来的。7 发生了什么?我将存储在 r2 中,因为那是我们的目标寄存器。但我完全不要得到这条指令。在他给我们的注释中,它说“BIC 表示操作数 1 而不是操作数 2;Op1 和 NOT Op2 的按位与 - 清除特定位。”我也明白 EQ 的含义,它的条件和 Z需要设置下注才能执行该指令。
示例 3: EORS r1, r3, r0 ; r3 异或 r0,将结果存储到 r1,设置标志 (我也不明白这条指令在做什么。我明白指令中的 S 是在我们的 CPSR 中设置标志,但我不明白 EOR 正在执行什么。
我需要帮助理解,提前谢谢。
【问题讨论】:
-
二进制中的 7 是什么?
-
这些操作是按位逻辑的,所以一个操作数的位 0 和另一个操作数的位 0 用于对抗真值表,基本上是为了得到结果位 0,没有结转到其他列。所以操作数中的第 1 位用于产生结果的第 1 位,但 3 等等。
标签: arm dpi instructions operations