【发布时间】:2016-06-06 07:04:32
【问题描述】:
讲座幻灯片说,CMN 通过将第二个操作数的 2 补码“添加”到第一个操作数来执行比较,而 CMP 通过从第一个操作数中“减去”第二个操作数来执行比较。但是根据我到目前为止所学到的知识,处理器中的 arm 指令仅执行加法,而减法是通过对第二个操作数进行 2 的补码来实现的(请告诉我这是否正确)。那么 CMN 和 CMP 基本上不是在做同样的事情吗???
【问题讨论】:
讲座幻灯片说,CMN 通过将第二个操作数的 2 补码“添加”到第一个操作数来执行比较,而 CMP 通过从第一个操作数中“减去”第二个操作数来执行比较。但是根据我到目前为止所学到的知识,处理器中的 arm 指令仅执行加法,而减法是通过对第二个操作数进行 2 的补码来实现的(请告诉我这是否正确)。那么 CMN 和 CMP 基本上不是在做同样的事情吗???
【问题讨论】:
听起来您的演讲幻灯片有些混乱。 CMP 的要点是,如果两个操作数相等,则结果为零,这意味着cmp a, b 就是a - b。 CMN 进行相同的比较,但第二个操作数取反,即cmn a, b 表示 a - (-b) - 在二进制补码算法下,它完全等同于 a + b。
【讨论】: