CSAPP知识点回炉重造记/汇编语言学习笔记
1.寄存器:
ax, bx, cx, dx, ah, al, bh, bl, ch, cl, dh, dl, sp, bp, si, di
段寄存器:
ds, ss, cs, es
2.在[…]中,bx,si,di,bp可以单个出现,或只能以4种组合出现:bx+si,bx+di,bp+si,bp+di
3.机器指令并不关心数据的值是多少,而关心指令执行前一刻,它将要处理的数据所在的位置。所要处理的数据可以在3个地方:CPU内部、内存和端口。
4.立即数:对于直接包含在机器指令中的数据(执行前在CPU的指令缓冲器中),在汇编语言中称为立即数。立即数在汇编指令中是直接给出的。
5.方括号里面是bx的,默认段地址在ds中;方括号里面是bp的,默认段地址在ss中。
6.在没有寄存器参与的内存单元访问指令中,用word ptr或byte ptr 显性地指明所要访问的内存单元的长度是很必要的,否则,CPU无法得知所要访问的单元是字单元还是字节单元。比如:
7.push指令只进行字操作
8.可以修改IP,或同时修改CS和IP的指令统称为转移指令。概括地讲,转移指令就是可以控制CPU执行内存中某处代码的指令。
9.ret指令用栈中的数据,修改IP的内容,从而实现近转移;retf指令用栈中的数据,修改CS和IP的内容,从而实现远转移。
10.栈是向低地址增长的:
PUSH 等价于:
subl $4, %esp
movl %ebp (%esp)