将值从x86寄存器复制到指针指定的存储位置

时间:2020-03-20 14:43:51

标签: gcc x86 inline-assembly

假设我有一个要将数据复制到的内存位置,并且该地址在指针中, 是否可以通过MOV指令和内联汇编将数据复制到该位置。或者基本上我将如何通过内联汇编将数据复制到内存位置。

在下面提供的代码段中,我只是将我的值复制到eax寄存器中,然后从eax寄存器复制到某个out值,而我想将其复制到某个内存中地址。

简而言之,我想将eax寄存器中的内容存储在outpointer所指向的地址中 内联汇编是否可能或有更好的方法?

#include <stdio.h>
#include <iostream>

using namespace std;

int func3(int parm)
{


    int out =0;
    // int *outpointer =&out;
    //what is in the eax register I would like to store 
    //in the address pointed  by outpointer

    asm("mov  %1 ,%%eax\n\t"
        "mov %%eax, %0": "=r"(out) : "r"(parm));


    // cout<<outpointer;
    return out;
}

int main(int argc, char const *argv[])
{
    int x{5};
    int y{0};


    y = func3(x);

    cout<<y;


    return 0;
} 

0 个答案:

没有答案