我需要使用内联汇编编写一个常见任务:我使用的代码如下。

Vector3 Matrix3x3::objectToInertial(const Vector3 &v)
{
    return Vector3(
        m11 * v.x + m12 * v.y + m13 * v.z,
        m21 * v.x + m22 * v.y + m23 * v.z,
        m31 * v.x + m32 * v.y + m33 * v.z
        );
}


如何用asm: m11 * v.x + m12 * v.y生成此方程?

最佳答案

如果您真的想通过内联汇编器计算m11 * v.x + m12 * v.y,请尝试以下操作(我假设您要将结果存储在可变结果中):

__asm
{
   fld m11
   fmul v.x
   fld m12
   fmul v.y
   faddp st(1), st
   fstp result
}


如果您想了解有关汇编中浮点算术的更多信息,可以查看Art of Assembly Language - Chapter 14-您也可以下载pdf形式的书。

07-28 01:32