拡張アセンブラのgccドキュメントによると:
オペランド[...]の制約でレジスタが許可されている場合にのみ、読み取り/書き込みオペランドを使用する必要があります。
これはかなり明白なようです。出力に+mを使用 することはできません。
しかし、私はそれが何度も行われているのを見てきました。実際、LinusTorvaldsは次のように記録しています
gccドキュメントはセカンダリです。それらは更新されておらず、正しくなく、現実を反映しておらず、問題ではありません。使用する唯一の正しいものは、このようなものには「+m」です
コンパイラがコードを台無しにしてしまう場合は、+mを使用したくありません。そして、出力asmを調べてそれが機能しているかどうかを調べても、明日、一見無関係に見えるものを変更しても、それが機能することを意味するわけではありません。または、gccの次のアップデートを取得したときにも機能します。
ドキュメントが正しく、これが正しく機能することに頼ることができない場合は、他のオプションを追求できるようにそれを知りたいと思います(そのほとんどは不快な痛みを伴います)。ドキュメントが間違っている場合は、修正する方法を教えてください。