前不久想了解一下python中协程的概念, 看了greenlet源码. 看到slp_switch的时候, 里面是汇编语言, 搜索之后好像是需要了解栈帧的原理.

基础太差, 看了好多文章, 才明白了一点点.

  1. 一个栈帧是一个被调用函数的一段内存空间
  2. ebp指向栈帧的底部, esp指向顶部, 即当前指向的内存地址.
  3. 入栈操作: push eax; 等价于 esp=esp-4,eax->[esp]
  4. 出栈操作:pop eax; 等价于 [esp]->eax,esp=esp+4

一些文章: