储存程序计算机工作模型
X86的CPU寄存器:
32位寄存器=高16位+低16位
低16位寄存器中又存在AX,BX,CX,DX,BP,SI,DI,SP八个寄存器
通用寄存器中比较重要的如EBP(堆栈基指针),ESP(堆栈顶指针)
堆栈是计算机中非常基础的东西
movl %eax , %edx eax=edx; (寄存器寻址)
将eax(寄存器)内存放至edx中
movl $0x123 , %edx eax=edx; (立即寻址)
将$0x123放至edx中
movl %eax , %edx eax=edx; (直接寻址)
将eax(寄存器)内存放至edx中
movl (%ebx) , %edx edx=(int 32_t*)ebx; (间接寻址)
将将ebx的值作为内存地址所访问到的值放至edx中
movl 4(%ebx) , %edx edx=(int 32_t*)(ebx + 4); (变址寻址)
在间接寻址之时改变寄存器的数值
pushl %eax :
popl %eax :
call 0x12345:
ret(return):
eip:从main开始,自加1,调用其它指令时,修改eip,
无特殊说明时,eip在该条指令结束时,指向下一条指令
ebp:总是指向堆栈的栈底
esp:总是指向堆栈的栈顶
eax:暂存数据
首先,对于计算机系统而言,堆栈是非常重要的组成部分,许多指令在运行的过程中都是通过堆栈的方式来进行操作的。
其次,对于几个重要寄存器的掌握是非常必要的。