朱荟潼 + 原创作品转载请注明出处 + 《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

最新文章

  1. lkx开发日志1-项目前的准备
  2. css狂记
  3. 【Python】调用WPS V9 API,实现PPT转PDF
  4. Matlab判断鼠标移动
  5. JSP的原理
  6. 6.5 为什么Android用Java不用c实现?
  7. HTML5 Canvas前台压缩图片并上传到服务器
  8. UESTC_Infected Land 2015 UESTC Training for Search Algorithm & String<Problem G>
  9. Ubuntu+Eclipse+ADT+Genymotion+VirtualBox开发环境搭建
  10. Umbraco模型默认属性
  11. c++实现精确计时
  12. 如何判断微信内置浏览器(通过User Agent实现)
  13. 检索字符创 php
  14. 地图性能测试利器PerfQA Analyzer
  15. 对HI3531的GPIO使用的再分析
  16. Python3+Selenium2完整的自动化测试实现之旅(三):Selenium-webdriver提供的元素定位方法
  17. VUE路由携带参数的三种方式
  18. LeetCode(97):交错字符串
  19. 流(Stream)与文件流(FileStream)
  20. React Native 如何做轮播图 react-native-swiper

热门文章

  1. 带有function的JSON对象的序列化与还原
  2. JAVA内存管理 [转]
  3. 4.Dubbo2.5.3集群容错和负载均衡
  4. ES6标准简介之Babel转码器解说
  5. 前后端交互之封装Ajax+SpringMVC源码分析
  6. 记录因xen而导致lvs,realserver转发activeconn为0
  7. Leetcode——198. 打家劫舍
  8. D. Jzzhu and Cities
  9. 使用Highcharts生成折线图_at last
  10. 「PKUSC2018」最大前缀和 LOJ#6433&BZOJ5369