gpt4 book ai didi

assembly - PowerPC 指令 `bcctr` 的目的是什么?

转载 作者:行者123 更新时间:2023-12-04 10:37:14 24 4
gpt4 key购买 nike

我是 PowerPC 架构的新手,我正在查看一些带有 bcctr 的反汇编代码。操作说明。虽然手册指定了如何 bcctr指令有效,它没有解释它通常用于什么。您能否提出此类用途的示例,并详细说明 ctr 的作用注册戏剧?我最好的猜测是它用于间接分支(例如,实现对函数指针或 vtable 的调用),但“递减 ctr 寄存器然后分支到 ctr”的目的对我来说根本不清楚。寄存器作为计数器和目标地址的双重用途尤其令人困惑。

最佳答案

bcctr (及其无条件变体 bctr )通常用于指向函数指针的分支。

Power ISA 指令集有两条指令¹,可用于跳转到寄存器中的地址:blr (分支到链接寄存器)和 bctr (分支到计数器寄存器)。使用 bctr意味着我们可以保留链接寄存器。

在这种情况下,这里使用 ctr 寄存器没有什么特别之处——它只是我们跳转到的地址。会有mtctr流中较早的指令,我们将地址加载到 ctr 寄存器中。

你可能会看到 bctrl也使用:这将链接寄存器设置为当前地址 + 4,然后跳转到计​​数器。这允许调用(通过函数指针)通过分支回链接寄存器返回。

¹:在非特权模式下,至少

关于assembly - PowerPC 指令 `bcctr` 的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28881721/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com