gpt4 book ai didi

c++ - 如何使用x86汇编访问c中main函数中的变量

转载 作者:太空宇宙 更新时间:2023-11-04 08:44:56 25 4
gpt4 key购买 nike

这是我的主要功能

    #include<stdio.h>
#include<stdlib.h>
int name1(int g);
char* getStringFromC(void);
int main(){

int a=2;
char* g="this is called from assembly";
printf("%d\n",name1(a));
return 0;
}

.text
.globl name1
name1:
push %ebp
movl %esp, %ebp
movl 8(%ebp),%eax
movl %ebp,%esp
popl %ebp
ret//This function name1(int a) in assembly

问题是如何从程序集访问 char* g ??我虽然是 12(%ebp) 或 16(%ebp) 应该包含像 char* g 等等的值..

最佳答案

你不应该这样做。如果它未作为参数包含在内且不是全局的,则不应尝试访问它。

但为了完整起见,我还是会回答:使用帧指针。 %ebp 指向它之前的值。将其复制到暂存器,您可以通过它索引调用者的局部变量。

关于c++ - 如何使用x86汇编访问c中main函数中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22073038/

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