これがどのように機能するのかわかりません。
GCC インライン アセンブラーは正しく理解するのが面倒ですが、コンパイラーが何をしているかを認識できるように、クロバー情報のマーキングについては非常に具体的です。
Microsoft Visual C++ のインライン アセンバーは非常に使いやすい (常に動作しているように見える) が、コードに関してどのような種類の保証や仮定が行われるかはわかりません。
VC++ は、どのレジスタが破壊されているかを「自動検出」しようとしますか? レジスタとスタックポインタがどのように変更されるかをどのように知るのですか? それは何らかの仮定をしますか?もしそうなら、どのようにそれらの仮定を回避しますか?