Vscode汇编调试出栈入栈—Apple的学习笔记

调试方法:主要看esp(当前栈指针)和ebp(栈基地址),没进入一个函数ebp会变动为当前函数的基地址。

我是在win10用的vscode+MinGw环境。

1.地址显示从小到大。从上到下(小->大),左到右(小->大)

2. 进入中断后ebp地址中的内容保存的是上一个ebp的地址。栈是向低地址方向增长的,分布保存局部变量。进入中断前先保存入参和返回地址。

3. 实例分析:

  Main->CalMin1->MyPrint。从main开始有2层调用关系。

4. memory内容如下:

当进入CalMin1的时候esp地址为0x61fed8,ebp为ed8(ed8保存的内容是进入中断前的old ebp 0x61ff18)。

进入MyPrint时候的ebp为0x61fea8(此地址中的内容为进入MyPrint前的old ebp0x61fed8)

同理可以分析从main进入CalMin1函数的情况。参数是0x10和0x20,返回地址是0x401465。

CalMin1的汇编,可以看到从MyPrint返回地址为0x4015de。

你可能感兴趣的:(Vscode汇编调试出栈入栈—Apple的学习笔记)