上一篇根据云风的协程库实现了windows下的协程:fiber协程
今天,打算用汇编实现一下(windows下汇编),实现之前需要先复习下函数调用的基础:点击打开链接 点击打开链接2 点击打开链接3
每个函数都有自己的堆栈,一般函数开头都有类似的语句:push ebp;mov ebp,esp;且函数调用前会将eip入栈,
以使函数能够正确返回.即可回到函数入口处继续往下执行,因此保存上下文信息(寄存器信息),获取当前程序(函数)
运行完成后怎么返回是我们实现的关键,亦即获取eip信息并入栈是我们实现的关键.需要清楚的是,eip入栈后才进行上下文的保存.
一个函数大概的流程: 将函数需返回指令地址入栈 -> 保存ebp等寄存器信息 -> 函数运行 -> 将ebp等数据出栈 -> 将指令地址出栈到eip中
程序根据eip信息继续执