n*****g 发帖数: 178 | 1 被问到一个简单的题,原话是:Describe what happens when a function is called
from another function.
谁能帮忙把这个问题大致说明白了?谢谢! |
d**********x 发帖数: 4083 | 2 push caller save registers
push callee parameters to stack
push %ebp
assign %esp to %ebp
adjust %ebp according to the new function
push pc
jump to new pc
called
【在 n*****g 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 被问到一个简单的题,原话是:Describe what happens when a function is called : from another function. : 谁能帮忙把这个问题大致说明白了?谢谢!
|
l*******b 发帖数: 2586 | 3 那个stack的经典回答?
save registers
push return address
push parameters
jump
貌似是这样? |
n*****g 发帖数: 178 | |
l*******b 发帖数: 2586 | 5 stack frame 就是指%ebp到%esp一段的数据吧 devilphoenix那个应该是标准答案了
【在 n*****g 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 和stack frame有关系吧?
|
h****n 发帖数: 1093 | 6
~~~
这里少了一个push return address别的基本上是对的
【在 d**********x 的大作中提到】![](/moin_static193/solenoid/img/up.png) : push caller save registers : push callee parameters to stack : push %ebp : assign %esp to %ebp : adjust %ebp according to the new function : push pc : jump to new pc : : called
|
d**********x 发帖数: 4083 | 7 我开始记的是对的。。后来给改错了。。。
确实,push pc应该移到push ebp之前。。。
好长时间没碰汇编了
【在 h****n 的大作中提到】![](/moin_static193/solenoid/img/up.png) : : ~~~ : 这里少了一个push return address别的基本上是对的
|
f***s 发帖数: 112 | 8 Here has great article
http://en.wikipedia.org/wiki/Function_prologue
In case they really want to test os knowledge, follow up with harder
question, e.g stack overrun prevention
http://en.wikipedia.org/wiki/Buffer_overflow_protection |