gpt4 book ai didi

c - 用gdb反汇编时指针在哪里

转载 作者:行者123 更新时间:2023-11-30 18:27:33 25 4
gpt4 key购买 nike

当我在 gdb 中使用 disas 命令时,代码如下:

int main(){
char*a;
size_t r;
return 1;
}

我有这个结果:

0x080483db <+0>:    push   %ebp
0x080483dc <+1>: mov %esp,%ebp
0x080483de <+3>: mov $0x1,%eax
0x080483e3 <+8>: pop %ebp
0x080483e4 <+9>: ret

我不明白为什么没有关于 char*asize*t 的说明。如何获取a值和r值的地址?它们真的存在吗?

最佳答案

声明 char*a;size_t r; 本身不执行任何操作;它们宁愿告诉编译器您希望能够使用标识符 ar 来存储值,其生命周期仅限于 main 的持续时间code> 的执行。另一方面,大多数汇编指令(除了 nop 等)做一些事情

如果您在这些变量中存储和访问值,或者获取它们的地址并使用这些地址,其方式并不等同于对它们无所作为,那么您会看到编译器发出代码来腾出空间(通常是通过调整堆栈指针,或将某些寄存器压入堆栈以保存其值,以便有额外的空闲寄存器用于数据)并存储/加载值。

关于c - 用gdb反汇编时指针在哪里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54847692/

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