Копирование значения из регистра x86 в область памяти, указанную указателем - PullRequest
0 голосов
/ 20 марта 2020

Предполагая, что у меня есть место в памяти, в которое я хочу скопировать данные, и у меня есть этот адрес в указателе. Можно ли скопировать данные в этом месте с помощью инструкции 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;
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...