首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我需要帮助把这个ppc指令翻译成c++

我需要帮助把这个ppc指令翻译成c++
EN

Stack Overflow用户
提问于 2021-02-01 10:20:59
回答 1查看 97关注 0票数 1

有没有人可以用c++给我举个例子,演示一下我练习汇编语言的技能,语言是powerpc。从我得到的信息来看,我们把44位移到了r0的右边,从那里我们提取了前8位。

extrdi r0, r0, 8,44

EN

回答 1

Stack Overflow用户

发布于 2021-02-01 14:02:24

ISA说extrdi是“提取和右对齐立即”,它是rldicl的扩展助记符(“向左旋转双字立即和清除左”)-2.07pg717。因此,您的语句等同于rldicl r0, r0, 52, 56

因此,您希望从位置44开始提取8位,然后将其右对齐,这将使其成为最低有效的8位。值得注意的是,IBM位数字与您可能预期的相反:conventional bit = 63 - IBM bit。所以IBM的44到51位是‘传统的’位号12到19。

我们简单地向下移位,这样位12就变成了位0,位19变成了位7-移位了12位。然后,我们需要对其进行掩码,以便只获得最低有效的8位。

代码语言:javascript
复制
unsigned long extrdi(unsigned long a) {
  return (a >> 12) & 0xff;
}

在godbolt.org:https://godbolt.org/z/rGe3EW上,我们看到这确实是:

代码语言:javascript
复制
extrdi:
        rldicl 3,3,52,56
        blr
        .long 0
        .byte 0,0,0,0,0,0,0,0

(r3是参数和返回寄存器)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65986376

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档