PowerPC汇编中stw偏移量用法:ori指令后代码段解析求助
PowerPC汇编指令解析(ori之后片段)
对应C代码:
long long int i=57745158985;
先快速梳理ori之前的指令作用(帮助理解上下文):
li r7,13:将目标64位整数的高32位(0xD,即十进制13)加载到通用寄存器r7lis r8,29153+ori r8,r8,0x3349:组合出目标整数的低32位(0x71E13349)并存储到r8,最终r7(高32位)+ r8(低32位)拼接成完整的64位数值57745158985(十六进制0xD71E13349)
以下是ori指令之后的逐条解析:
stw r7,24(rsp):stw是32位字存储指令,把r7中的高32位值写入栈指针rsp偏移24字节的内存地址。stw r8,28(rsp):同样用stw指令,将r8中的低32位值写入rsp偏移28字节的地址。这两步执行后,rsp+24到rsp+31的8字节内存区域就完整存放了目标64位整数的二进制数据。lfd fp0,24(rsp):lfd是64位浮点加载指令,从rsp+24的位置读取8字节数据,加载到浮点寄存器fp0中。这里用浮点寄存器操作整数是编译器的选择,可能是后续流程需要浮点处理,或是特定优化策略。stfd fp0,8(rsp):stfd是64位浮点存储指令,把fp0中的64位数据写入rsp偏移8字节的地址——这就是变量i最终在栈上的存储位置。
内容的提问来源于stack exchange,提问作者onr
相关产品推荐
相关产品推荐

