Dav*_*erd 6 c++ gcc inline-assembly
根据扩展汇编程序的gcc文档:
当操作数的约束允许寄存器时,您应该只使用读写操作数.
这似乎是非常明确的:你不能使用+ m作为输出.
但是,我已经看过很多次了.事实上,Linus Torvalds有记录说
gcc文档是次要的.他们没有更新,他们不正确,他们没有反映现实,他们并不重要.对于像这样的事情,唯一正确的用法是"+ m"
如果编译器最终搞砸了我的代码,我不想使用+ m.甚至检查输出asm以确定它是否正常工作并不意味着明天当我改变一些看似无关的东西时它仍然会起作用.或者当我获得gcc的下一次更新时它仍然可以工作.
如果文档是正确的,我不能依赖于这种正常工作,我想知道,所以我可以寻求其他选择(其中大多数是令人不快的痛苦).如果文档错误,请告诉我如何纠正它们.