【问题标题】:PowerPC and the clrlslwi -or- rlwinm instructionPowerPC 和 clrlslwi -or- rlwinm 指令
【发布时间】:2016-04-15 21:48:54
【问题描述】:

我已经阅读了这里的其他帖子,但仍有关于 PPC 和 rlwinm 的问题。

我正在看的例子是:

li  r0, 0x100
clrlslwi  r9, r0, 27,5 (which afaik is the same as rlwinm r9, r0,5,22,26)

首先我加载 r0 = 0x100 然后将 r0 左移 5,所以 r0 = 0x2000(没有溢出,所以不需要旋转)

使用位 22 到 26 设置掩码 = 0x3e0

AND r0 与掩码 = 0x2000 AND 0x3E0 = 0

我一定是做错了什么...这总是净 0 我错过了什么?

【问题讨论】:

  • 你应该格式化你的问题(用反引号包裹内联代码段,用四个空格作为前缀代码块)并包含你遇到问题的实际代码。
  • 嗯,值总是0。2-2也是。有什么问题?
  • 只有我,还是 PPC 助记符方式比大多数其他架构更难破译?从编译器输出来看,大多数 insn 在 ARM asm 中的作用非常明显,甚至在我对 ARM 了解很多之前。但是 PPC 看起来就像是胡言乱语。
  • @PeterCordes:嗯,ARM 将 32 位指令中的多余位用于预测执行,PPC 使用它们使指令执行更复杂的操作。猜猜哪个 ISA 需要完全重做 64 位。
  • 您的分析看起来正确。但问题是什么?

标签: assembly powerpc


【解决方案1】:

是的,这是真的(清除左并左移字立即)

clrlslwi rA,rS,b,n (n ≤ b ≤ 31) = rlwinm rA,rS,n,b – n,31 – n

所以 clrlslwi r9, r0, 27,5 = rlwinm r9, r0, 5, 22(27-5), 26(31-5)

【讨论】:

    猜你喜欢
    • 2015-09-02
    • 1970-01-01
    • 2018-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多