csapp
中的Labs
汇总: https://github.com/xzwsloser/csapp-labs/tree/master 这里主要用于记录在之后的学习过程中有所遗忘的知识点
处理器体系结构
1. 指令执行流程
- 看书的过程中发现自己对于
ret
指令和pushq
指令还有popq
指令的执行过程有所遗忘,执行过程如下: pushq
和popq
指令的作用(特别注意popq
):pushq
指令: 把栈指针向下面移动8
并且把原来的rA
中存储的地址存放在内存中,加入rA
中存储这指令实体,那么利用这一个指令就会导致新的栈指针执行的地址对应在内存中就是这一条指令实体(attacklab
)(相当于向内存中储存储指令,之前的指令存储在新的栈指针指向的位置)popq
指令: 把栈指针向上面移动8
并且把原来的栈指针指向的地址实体放入到寄存器rA
中(完成了从内存到寄存器的映射),这里可以是把内存中的指令取出到寄存器中了(相当于从内存中取出指令,取出之前的指令存储在rA
中,栈指针也可以存储数据(比如上下文))ret
指令:- 类似于
pushq
指令,这里从原来的栈顶指针中取出指令并且跳转执行原来栈顶指针指向的指令,也会把栈顶指针`+8