【问题标题】:What's the difference between CMP and CMN?CMP和CMN有什么区别?
【发布时间】:2016-06-06 07:04:32
【问题描述】:

讲座幻灯片说,CMN 通过将第二个操作数的 2 补码“添加”到第一个操作数来执行比较,而 CMP 通过从第一个操作数中“减去”第二个操作数来执行比较。但是根据我到目前为止所学到的知识,处理器中的 arm 指令仅执行加法,而减法是通过对第二个操作数进行 2 的补码来实现的(请告诉我这是否正确)。那么 CMN 和 CMP 基本上不是在做同样的事情吗???

【问题讨论】:

    标签: assembly arm


    【解决方案1】:

    听起来您的演讲幻灯片有些混乱。 CMP 的要点是,如果两个操作数相等,则结果为零,这意味着cmp a, b 就是a - b。 CMN 进行相同的比较,但第二个操作数取反,即cmn a, b 表示 a - (-b) - 在二进制补码算法下,它完全等同于 a + b

    【讨论】:

    • 啊,所以 CMN 也做了一个减法来比较两个操作数,除了第二个操作数被否定为相反的符号。对吗?
    • 确实如此。当您考虑到不能直接以操作数 2 格式编码否定立即数时,它可能开始变得更有意义。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-26
    • 2014-07-29
    • 2015-04-14
    • 2010-10-02
    • 2011-12-12
    • 2010-09-16
    • 2012-03-14
    相关资源
    最近更新 更多