朱荟潼 + 原创作品转载请注明出处 + 《Linux内核分析》MOOC课http://mooc.study.163.com/course/USTC-1000029000
1.冯诺依曼体系结构
---核心:存储程序计算机
计算机在执行程序时须先将要执行的相关程序和数据放入内存储器中,在执行程序时CPU根据当前程序指针寄存器的内容取出指令并执行指令,然后再取出下一条指令并执行,如此循环下去直到程序结束指令时才停止执行。其工作过程就是不断地取指令和执行指令的过程,最后将计算的结果放入指令指定的存储器地址中。
2.X86汇编基础
(1)通用寄存器(32位)
EAX:累加寄存器,常用于运算;
EBX:基址寄存器,常用于地址索引;
ECX:计数寄存器,常用于计数;
EDX:数据寄存器,常用于数据传递;
ESP:堆栈指针,与SS配合使用,可指向目前的堆栈位置;
EBP:基址指针寄存器,可用作SS的一个相对基址位置;
ESI:源变址寄存器,可用来存放相对于DS段之源变址指针;
EDI:目的变址寄存器,可用来存放相对于ES 段之目的变址指针。
(2) 段寄存器
CS:代码段寄存器(存有代码)
DS:数据段寄存器
SS:堆栈段寄存器
ES:附加段寄存器
(3) eip特点:
a.自加1条指令。 从该指令执行完自动指向下一条指令。
b.只可被一下指令修改:call,ret,jmp,条件跳转
(4)cpu在实际取指令是根据 cs:eip 来定位一条指令.
(5)堆栈是向下增长的。
3.X86汇编指令
(1)寻址方式
(2)Push,pop,ret,enter,leave
(3)Eax 寄存器
函数返回值默认用它存储,返回给上一级函数
(4)函数调用堆栈是由逻辑上多个堆栈叠加起来的
4.实验
(1)创建5337.c并查看
(2)编译
(3)修改成汇编语言
把.XXX删去即可
(4)栈的变化分析
针对实验中的分析(主函数main,俩子函数分别是g,f):
(ps:分析栈的变化时,笔的颜色分别代表一个函数)
函数之间(子函数改名:a,b):
学习总结
上学期学习过相关内容,所以这次课程的开始相对比较容易,同时对于这学期的学习内容也会努力学习,知识内容的掌握更加深刻。
注
朱荟潼+原创作品转载请注明出处+ 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000