VisualStudioとIDEの両方でG++4.6.1を使用してアセンブリコードをコンパイルする必要があります。-masm = intelフラグは、変数を参照およびアドレス指定しない限り機能しますが、これを行う必要があります。
組み込み関数の使用を検討しましたが、コンパイルされたアセンブリはまったく最適ではありません(たとえば、使用するsseレジスタを定義できないため、パイプの最適化はできません)。
コードのこれらの部分を検討してください(インテスタイルアセンブリ):
mov ecx, dword ptr [p_pXcoords]
mov edx, dword ptr [p_pYcoords]
movhpd xmm6, qword ptr [oAvgX]
movhpd xmm7, qword ptr [oAvgY]
movlpd xmm6, qword ptr [oAvgX]
movlpd xmm7, qword ptr [oAvgY]
ここで、p_pXcoordsとp_pYcoordsはdouble *配列と関数パラメーターであり、oAvgXとoAvgYはdouble値を単純化したものです。
別のコード行はこれです。これは、アセンブリブロックの真ん中にあります。
movhpd xmm6, qword ptr [oAvgY]
つまり、変数にアクセスして、コードの途中にある特定のsseレジスタ内でそれらを使用する必要があります。AT&T構文でこれを行うにはどうすればよいですか?-masmフラグを使用してg ++コンパイラでこれを行うことはできますか?
VSとg++4.6.1ベースのコンパイラの両方に1つのアセンブリコードを使用する方法はありますか