ARM逻辑操作说明

时间:2017-11-08 03:58:52

标签: arm dpi instructions operations

我正在学习微控制器课程,我们正在研究ARM处理器架构。我们目前正在讨论数据处理指令(算术,比较,逻辑和数据移动)。我理解算术比较和数据移动指令的概念以及它们在代码中编写时的工作方式。但是,我不明白逻辑指令是如何工作的。在我们的讲座中,我们给出了3个例子,我不理解它们。

示例1: AND r0,r1,r2; r1和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的按位AND - 清除特定位。”我也得到了EQ的含义,它的条件和Z需要下注设置才能执行该指令。

示例3: EORS r1,r3,r0; r3异或OR,将结果存储在r1中,设置标志 (我也不明白这条指令在做什么。我明白指令中的S是在CPSR中设置标志,但我不明白EOR的表现。

我需要帮助理解,提前谢谢。

1 个答案:

答案 0 :(得分:0)

EOR是一种异或(通常也称为异或)。如果任一输入位为1,则返回1,但如果两者都不是1,则返回0。