Edit Notes - Rearrange, Appendix, Bugfixes.
This commit is contained in:
@@ -92,13 +92,14 @@ int example() {
|
||||
又假设`example()`被 main 函数调用,那么栈帧可能会是这种分布:
|
||||
|地址|...|备注|
|
||||
|-|:--:|-|
|
||||
|0x524|...||
|
||||
|0x520|(`main()`的 EBP)|`example()`栈帧从这里开始|
|
||||
|0x51C|int a = 10|
|
||||
|0x518|int b|
|
||||
|0x514|(空余 8B)|`gcc`编译器要求栈帧大小为 16B 的整数倍|
|
||||
|0x510|(空余 8B)|`gcc`要求栈帧大小为 16B 的整数倍|
|
||||
|0x50C|1024|参数 y|
|
||||
|0x508|10|参数 x,即复制 a 的值|
|
||||
|0x504|调用`eg_sub()`时 EIP 指向的下一指令地址|亦即被`call`压栈、`ret`返回的地址<br>`example()`栈帧到此结束|
|
||||
|0x504|调用`eg_sub()`时 EIP 指向的下一指令地址|亦即被`call`压栈、`ret`返回的地址;<br>`example()`栈帧到此结束|
|
||||
|0x500|(`example()`函数的 EBP)|这里是`eg_sub()`的栈帧了|
|
||||
|...|...||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user