c++ - 如何在 VS 中使用 asm 中的浮点变量

标签 c++ visual-c++ assembly inline-assembly

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

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 格式的书。

关于c++ - 如何在 VS 中使用 asm 中的浮点变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5950220/

相关文章:

c++ - 具有相同名称的纯虚函数的不同实现

linux - 在程序集中动态分配内存?

c++ - 指针 (*and) 语法引用

C++使用动态数组将小写字母更改为大写字母

c++ - 类模板特化的问题

c++ - 即使包含头文件,程序也会出现 LNK2019 错误

c++ - Fortran 77 处理 C++ 内存分配

c++ - 重载模板运算符调用单独的类运算符

c - 将字符数组传递给外部汇编函数

assembly - 为什么汇编语言运算时要在字符串后面加-2?