gpt4 book ai didi

c++ - 如何将寄存器的值存储到指针指向的内存位置?

转载 作者:可可西里 更新时间:2023-11-01 17:56:27 26 4
gpt4 key购买 nike

我有以下代码:

void * storage = malloc( 4 );

__asm
{
//assume the integer 1 is stored in eax
mov eax, storage //I've tried *storage as well but apparently it's illegal syntax
}
/* other code here */
free(storage);

然而,在代码中,当我取消引用存储指针时(如 *(int *)storage ),我没有得到 1。那么,存储值的正确方法是什么将寄存器写入 C++ 指针指向的内存?

最佳答案

您确定您知道自己真正需要什么吗?您请求的代码会将寄存器值存储到由 malloc(“由指针指向”)分配的内存中,即 *(int*) 存储 位置,但是您接受了将值存储(或至少尝试存储)到指针本身的答案,这是完全不同的事情。

要将 eax 存储到“由指针指向”的内存中,即按照您的要求存储到 *(int*) 存储 中,您必须做一些事情像那样

mov  edi, dword ptr storage
mov dword ptr [edi], eax

(我对汇编指令使用“Intel”从右到左的语法,即 mov 从右操作数复制到左操作数。我不知道是哪种语法 - 从右到左或从左到右 - 您的编译器正在使用。)

另请注意,在 mov edi, dword ptr storage 中,dword ptr 部分是完全可选的,没有任何区别。

关于c++ - 如何将寄存器的值存储到指针指向的内存位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2363736/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com