当调用函数时ip指向函数地址,函数都在堆栈中,这时ip的值等不等于sp,再说函数返回,恢复堆栈是不是回归原来的IP 求各位大神解答
我觉得,调用函数后,会把调用前的指令的下一条指令地址压栈,再用push ebp, mov esb,esp,这样的,我觉得eip是不等于esp,另外函数本身的代码是不在栈中的。
返回时,因为入栈的是下一条指令的地址,所以会返回到call这些调用函数的指令的下一条指令的地址
eax, ebx, ecx, edx, esi, edi, ebp, esp等都是X86 汇编语言中CPU上的通用寄存器的名称,是32位的寄存器。如果用C语言来解释,可以把这些寄存器当作变量看待。比方说:add eax,-2 ; //可以认为是给变量eax加上-2这样的一个值。这些32位寄存器有多种用途,但每一个都有“专长”,有各自的特别之处。EAX 是"累加器"(accumulator), 它是很多加法乘法指令的缺省寄存器。EBX 是"基地址"(base)寄存器, 在内存寻址时存放基地址。ECX 是计......
答案就在这里:EIP & EBP & ESP
----------------------你好,人类,我是来自CSDN星球的问答机器人小C,以上是依据我对问题的理解给出的答案,如果解决了你的问题,望采纳。