【问题标题】:What would be the C equivalent of rlwinm (PPC Instruction)rlwinm(PPC指令)的C等价物是什么
【发布时间】:2015-03-28 09:53:18
【问题描述】:

我想知道你们中是否有人知道下面 powerpc 指令的 C 等效项。

rlwinm    r31, r0, 0,13,13

谢谢。

【问题讨论】:

    标签: c powerpc


    【解决方案1】:

    立即循环左寄存器,然后用掩码循环and

    这里向左旋转为0,所以我们可以忽略它。掩码是从 13 到 13 设置的所有位,即位 13(0x2000 作为位掩码;此命令可能仅在 and 上被选择以记录选择了位 13)。

    所以在这种情况下,我们需要为第 13 位构建一个掩码,然后按位应用 and 与源。

    r31 = r0 & (1 << 13);
    

    &lt;&lt; 是 C 中的左移操作,我们在这里使用它来为第 13 位创建掩码。&amp; 是 C 中的与操作。

    文档来源:http://sametwice.com/rlwinm

    【讨论】:

    • 感谢您的回答!我知道我在最初的问题中没有问这个问题,但你能简要解释一下这是如何工作的吗?
    • 我已经编辑了答案以更详细地解释它是如何工作的。如果这是正确的,您可能希望接受答案以关闭问题(在左侧添加复选标记)
    • 再次感谢,我已接受您的回答是正确的,但我只是想知道 1 来自哪里? 1 &lt;&lt; 13
    • 1 是最低位的位掩码。我们将它移动 13 以获得第 13 位的位掩码。C++ 中没有内置操作来设置第 13 位,所以这与我想的一样接近。注意这是一个常量表达式,我们可以写成r0 &amp; 0x2000
    猜你喜欢
    • 2018-04-02
    • 1970-01-01
    • 2014-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-19
    • 2010-12-07
    • 2010-12-01
    相关资源
    最近更新 更多