Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 当主函数执行时,EBP寄存器指向什么?(英特尔x82体系结构)_C_Assembly_X86_Calling Convention - Fatal编程技术网

C 当主函数执行时,EBP寄存器指向什么?(英特尔x82体系结构)

C 当主函数执行时,EBP寄存器指向什么?(英特尔x82体系结构),c,assembly,x86,calling-convention,C,Assembly,X86,Calling Convention,我知道在函数调用期间,EBP寄存器指向被调用函数推送到堆栈上的第一个值。但是当第一次调用main函数时,EBP寄存器指向什么?它是主函数推送到堆栈上的第一个局部变量吗 输入函数时,ebp指向的位置未定义。函数序言(是函数的一部分)使ebp指向堆栈帧,但如果不需要序言,则可以省略它,或者可以使用ebp执行任何其他操作,只要它在返回时恢复值main在这方面没有什么不同。在输入函数时,ebp指向的位置未定义。函数序言(是函数的一部分)使ebp指向堆栈帧,但如果不需要序言,则可以省略它,或者可以使用eb

我知道在函数调用期间,EBP寄存器指向被调用函数推送到堆栈上的第一个值。但是当第一次调用main函数时,EBP寄存器指向什么?它是主函数推送到堆栈上的第一个局部变量吗

输入函数时,
ebp
指向的位置未定义。函数序言(是函数的一部分)使
ebp
指向堆栈帧,但如果不需要序言,则可以省略它,或者可以使用
ebp
执行任何其他操作,只要它在返回时恢复值
main
在这方面没有什么不同。

在输入函数时,
ebp
指向的位置未定义。函数序言(是函数的一部分)使
ebp
指向堆栈帧,但如果不需要序言,则可以省略它,或者可以使用
ebp
执行任何其他操作,只要它在返回时恢复值
main
在这方面没有什么不同。

在操作系统初始化
main()
之前,
ebp
的值,因此您需要说明您使用的是什么操作系统


说到Linux和
libc
,在
main()
之前有一个函数,叫做
\u start
。但是,在
\u start
之前,
ebp
esp
的位置由Linux内核在分配堆栈时决定。而且,大多数情况下,默认值被添加到偏移量中,以实现ASLR(地址空间布局随机化)。在操作系统初始化
main()
之前,
ebp
的值,因此您需要说明您使用的是什么操作系统


说到Linux和
libc
,在
main()
之前有一个函数,叫做
\u start
。但是,在
\u start
之前,
ebp
esp
的位置由Linux内核在分配堆栈时决定。而且,大多数情况下,为了实现ASLR(地址空间布局随机化),默认值被添加到偏移量中。

实际上,如果
ebp
被用作帧指针,它通常指向旧的
ebp
,因为正常的函数输入代码是
push ebp;mov ebp,esp
。实际上,如果将
ebp
用作帧指针,它通常指向旧的
ebp
,因为正常的功能输入代码是
push ebp;mov ebp,esp
。Initial
ebp
在ABI中未定义,但linux内核将其设置为零。@Jester:在ABI中未定义,但在运行
main()
时肯定没有定义。或者你会有一个真正的问题…它是未定义的,即使在进入
main
,不,这不会造成问题,因为任何想要帧指针的函数都必须为自己设置它。请参阅@StenSoft的答案。Initial
ebp
在ABI中未定义,但linux内核将其设置为零。@Jester:在ABI中未定义,但在运行
main()
时肯定不会。或者你会有一个真正的问题…它是未定义的,即使在进入
main
,不,这不会造成问题,因为任何想要帧指针的函数都必须为自己设置它。见@StenSoft的答案。