6.2 EOR逻辑异或指令 1.指令的编码格式 逻辑异或 EOR(Exclusive OR)指令将寄存器<Rn>中的值和<shifter_operand>的值执行 按位“异或”操作,并将执行结果存储到目的寄存器<Rd>中,同时根据指令的执行结果更新 CPSR中相应的条件标志位。 指令的编码格式如图 6.3所示。 cond 00 I 0001 S Rn Rd shifter_operand 图 6.3 EOR指令的编码格式 2.指令的语法格式 EOR{<cond>}{S} <Rn>,<Rn>,<shifter_operand> ① <cond> 为指令编码中的条件域。它指示指令在什么条件下执行。当<cond>忽略时,指令为无条 件执行(cond=AL(Alway))。 ② <S> S 位(bit[20])决定指令的执行是否影响 CPSR 中的条件域。当 S 位清 0 时,指令执行 不影响 CPSR。当 S位置位时(并且不是 r15),则有以下规则。 • 如果结果为负,则标志位 N置位;否则清 0(也就是说 N等于结果的第 31位)。 • 如果结果为 0,则标志位 Z置位;否则清 0。 • 当操作定义为算术操作(ADD、ADC、SUB、SBC、RSB或 RSC)时,标志位 C设 置为 ALU的进位输出;否则设置为移位器的进位输出。如果不需要移位,则保持 C。 • 在非算术操作中,标志位 V 保持原值。在算术操作中,如果有从第 30位到第 31位 的溢出,则置位;如果不发生溢出,则清 0。仅当算术操作中操作数被认为是 2 的补码的有 符号数时,这个标志位才有意义,而且指示结果超出范围。 若指令中的目标寄存器<Rd>为 r15,则当前处理器模式对应的 SPSR的值被复制到 CPSR 寄存器中。用户模式和系统模式下,由于没有相应的 SPSR,指令的执行结果不可预知。 ③ <Rd> 指定目标寄存器。 ④ <Rn> 指定第一个源操作数寄存器。 ⑤ <shifter_operand> 使用 ARM的通用寻址模式确定第二个源操作数。它影响指令编码格式中的 I(bit[25]) 位和 shifter_operand(bits[11∶0])位。
- 粉丝: 19
- 资源: 2万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助