csapp中的Labs汇总: https://github.com/xzwsloser/csapp-labs/tree/master 这里主要用于记录在之后的学习过程中有所遗忘的知识点

处理器体系结构

1. 指令执行流程

  • 看书的过程中发现自己对于ret指令和pushq指令还有popq指令的执行过程有所遗忘,执行过程如下:
  • pushqpopq指令的作用(特别注意popq): Pasted image 20241029231200.png
  • pushq指令: 把栈指针向下面移动8并且把原来的rA中存储的地址存放在内存中,加入rA中存储这指令实体,那么利用这一个指令就会导致新的栈指针执行的地址对应在内存中就是这一条指令实体(attacklab)(相当于向内存中储存储指令,之前的指令存储在新的栈指针指向的位置)
  • popq指令: 把栈指针向上面移动8并且把原来的栈指针指向的地址实体放入到寄存器rA中(完成了从内存到寄存器的映射),这里可以是把内存中的指令取出到寄存器中了(相当于从内存中取出指令,取出之前的指令存储在rA中,栈指针也可以存储数据(比如上下文))
  • ret指令: Pasted image 20241029231827.png
  • 类似于pushq指令,这里从原来的栈顶指针中取出指令并且跳转执行原来栈顶指针指向的指令,也会把栈顶指针`+8