gpt4 book ai didi

c++ - 如果将 "+m"用作输出约束,gcc 能否正常工作?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:41:13 24 4
gpt4 key购买 nike

根据gcc docs在扩展汇编器上:

只有当操作数的约束 [...] 允许寄存器时,您才应该使用读写操作数。

这似乎非常明确:您不能将 +m 用于输出。

但是,我已经看到它被执行了很多次。事实上,Linus Torvalds 是 on record如说

gcc 文档是次要的。它们没有更新,它们不正确,它们不反射(reflect)现实,它们无关紧要。对于这样的事情,唯一正确的用法是“+m”

如果编译器最终会搞砸我的代码,我不想使用 +m。甚至检查输出 asm 看它是否工作并不意味着明天当我更改一些看似无关的东西时它仍然可以工作。或者当我获得 gcc 的下一个更新时它仍然可以工作。

如果文档是正确的并且我不能依赖它正常工作,我想知道这一点,以便我可以寻求其他选择(其中大部分都是令人不快的痛苦)。如果文档有误,请告诉我如何更正它们。

最佳答案

事实证明,问题出在文档上(参见 email)。如果链接失效:

文档的那部分错误已经有一段时间了。该文档针对 4.8 进行了更正,但对于早期版本也是错误的。

由于我使用的是报告版本 4.7.2 的 rubenvb 的 x64 编译器,这就是我正在阅读的文档的版本。然而,实际的代码 checkin 是在 2004 年,所以我非常有信心我正在运行的代码中包含更改。

关于c++ - 如果将 "+m"用作输出约束,gcc 能否正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15592954/

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