gpt4 book ai didi

C:尝试将变量存储在特定的 XMM 寄存器中

转载 作者:行者123 更新时间:2023-11-30 18:06:44 34 4
gpt4 key购买 nike

我正在开发一个涉及 SSE 内在函数和 XMM 寄存器的项目,并且我想使用提供的所有 16 个寄存器。我试图明确告诉编译器执行此操作,但它似乎不起作用。例如,我可能会写这样一行:

register __m128 foo __asm__("xmm12") = _mm_setzero_ps();

foo 将存储在寄存器 xmm12 中,并初始化为零(我稍后将添加到 foo 等)

问题是,当我查看汇编代码时,xmm12 没有在任何地方使用,即使它实际上在代码中是必需的,而且我告诉编译器使用该寄存器.

我很难弄清楚我做错了什么。我的语法不正确吗?编译器是否忽略了我所说的内容,如果是的话,为什么?

任何帮助将不胜感激!

最佳答案

我刚刚尝试使用 gcc 4.2 进行实验,看起来只能使用 -O0 成功指定 XMM 寄存器。一旦你打开优化,gcc就会改变寄存器分配。所以看起来你可以完全控制并手动完成所有优化,如果你真的愿意的话,只要你使用 gcc -O0 ,否则让 gcc 负责优化和寄存器分配你。

关于C:尝试将变量存储在特定的 XMM 寄存器中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5363355/

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