在代码被编译时,编译器能够知道函数需要多少的栈空间,并在调用函数时,在栈上开辟相应的大小。在这个题目中,我们将此称为 帧大小。
在此题中,Musha 想要你维护一下函数的调用栈,并分析函数的调用深度与栈空间的使用大小。
具体而言,你可以知道程序中所有函数的函数名与帧大小。
当调用一个函数时,将这个函数入栈,并扩充栈空间。当函数返回时,将其出栈,并释放栈空间。
在这一个题目中,Musha 精心设计的编译器还支持一键切换栈帧,具体而言,将函数调用栈从栈底到栈顶依次编号为 0, 1, 2, ...
,切换栈帧到 时,编号大于 的函数全部出栈,并释放栈空间。
输入指令
指令 |
含义 |
样例 |
call func |
调用函数 |
call main |
return |
栈顶函数返回 |
return |
frame x |
切换栈帧到 |
frame 1 |