我需要在 Visual Studio 和使用 G++ 4.6.1 的 IDE 中编译一些汇编代码。只要我不引用和解决任何变量,-masm=intel 标志就可以工作,但是我需要这样做。
我考虑过使用内在函数,但编译后的程序集根本不是最优的(例如,我无法定义要使用的 sse 寄存器,因此无法进行管道优化)。
考虑这些代码部分(inte 样式程序集):
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 是双精度数组和函数参数,oAvgX 和 oAvgY 是简单的双精度值。
另一行代码是这样的,它位于汇编块的中间:
movhpd xmm6, qword ptr [oAvgY]
换句话说,我需要访问变量并在代码中间的特定 sse 寄存器中使用它们。我怎样才能用 AT & T 语法做到这一点,最好:我可以用 g++ 编译器使用 -masm 标志做到这一点吗?
有什么办法可以同时为 VS 和基于 g++ 4.6.1 的编译器使用一个汇编代码