基于GCC ebp的寻址与基于esp的寻址
当我反汇编gcc编译的二进制文件时,我可以看到局部变量是使用EBP寄存器寻址的。[EBP-0x10],[EBP-0x20]像这样。。。 然而,有时我可以看到局部变量通过ESP。。[ESP+0x20],[ESP+0x3c] gcc何时使用ESP?还是EBP?如何处理局部变量?基于ESP的寻址和基于EBP的寻址有什么区别 我可以强制GCC使用ESP或EBP来处理局部变量吗基于GCC ebp的寻址与基于esp的寻址,gcc,stack,Gcc,Stack,当我反汇编gcc编译的二进制文件时,我可以看到局部变量是使用EBP寄存器寻址的。[EBP-0x10],[EBP-0x20]像这样。。。 然而,有时我可以看到局部变量通过ESP。。[ESP+0x20],[ESP+0x3c] gcc何时使用ESP?还是EBP?如何处理局部变量?基于ESP的寻址和基于EBP的寻址有什么区别 我可以强制GCC使用ESP或EBP来处理局部变量吗 提前感谢。ebp用作帧指针寄存器,如果可用,将用于所有帧访问(本地变量和参数) 您可以使用-fomit frame pointe
提前感谢。ebp用作帧指针寄存器,如果可用,将用于所有帧访问(本地变量和参数) 您可以使用
-fomit frame pointer
控制gcc中帧指针的使用,该命令由-O2
及更高版本隐式启用。您可以使用显式的-fno省略帧指针
和更高的-O
级别禁用此功能(返回帧指针)