如何从内联汇编程序读取和写入在 C++ 上创建的双精度数组?

How to read and write a double array created on C++ from Inline Assembler?

我想通过内联汇编器操作在 C++ 上创建的数组,当我尝试使用一维数组时它有效 O.K,但是当我使用多维数组时我总是得到零。

我正在使用 Visual Studio 2019.

#include <iostream>
using namespace std;

int main()
{
    double matrix[2][2] = { {10, 20},{30, 40} };//I always get a Zero
    //double matrix[2] = { 50, 60 };//It works

    double temp = 987;

    _asm {
        mov esi, 0

        finit
        ; fld[matrix]
        fld matrix[esi]
        fstp temp
        fwait
    }

    cout << "temp: " << temp << endl;
    return 0;
}

我应该怎么做才能获得 30?

非常感谢您!!

根据@michael-petch 的评论,解决方案是:

#include <iostream>
using namespace std;

int main()
{
    double matrix[2][2] = { {10, 20},{30, 40} };
    double temp[2][2];
    double val = 5;

    _asm {
        mov esi, 0
        mov ecx, 4
        finit
        for1:
            fld val
            fld qword ptr matrix[esi]
            fadd
            fstp qword ptr temp[esi]
            add esi,8
        loop for1
        fwait
    }

    for (int i = 0; i < 2; i++) {
        for (int j = 0; j < 2; j++) {
            cout << temp[i][j]<<" ";
        }
        cout << endl;
    }

    return 0;
}