Linux内核分析》第一周.计算机是如何工作的?
                                                                       20135204 郝智宇 
一、存储程序计算机工作模型
1.      冯诺依曼体系结构:
数字计算机的数制采用二进制;计算机应该按照程序顺序执行。
内存保存指令和数据,CPU负责解释和执行这些指令。
2.    API:
程序员与计算机的接口界面。
3.    EIP:
CALL  RET  IMP
 
二、X86汇编基础
1.      X86CPU的寄存器
E开头32位,R开头64位。
  堆栈是计算机中非常基础性的东西。
2.      代码段、堆栈段、数据段、附加段
3.      CPU在实际取指令时根据cs:eip来准确定位一个指令。
4.      32位和64位核心机制上差别不大。
5.      汇编指令:
Movl,pushl,popl,call,ret,leave…
AT&T汇编格式与Intel格式略有不同。Linux内核使用的是AT&T汇编格式。
Pushl:栈的位置在增长;Popl:栈的位置在收缩。
Esp栈顶;ebp栈底。
Eip不能直接被修改,只能call,ret.
 
三、汇编一个简单的C程序分析其汇编指令执行过程(实验楼环境下操作)

1.  新建一段代码,粘贴题目所给的代码段并进行修改之后,保存:
 





2.  以下为这段代码的汇编指令:


3.  删除掉以点(.)开头的指令之后,得到干净完整的汇编指令如下:
g:
pushl   %ebp
movl    %esp, %ebp
movl    8(%ebp), %eax
addl    $5, %eax
popl    %ebp
ret
f:
pushl   %ebp
movl    %esp, %ebp
subl    $4, %esp
movl    8(%ebp), %eax
movl    %eax, (%esp)
call    g
leave
ret
main:
pushl   %ebp
movl    %esp, %ebp
subl    $4, %esp
movl    $10, (%esp)
call    f
addl    $1, %eax
leave
ret

4.分析汇编代码的工作过程中堆栈的变化如下:
(接上)
四.对“计算机是如何工作的”的理解:

计算机的执行指令都是机器语言,通过汇编语言和高级语言编出来的程序通过计算机内的编译程序,将程序编译成计算机可执行的文件来进行工作,交换数据。
计算机在实际工作工程中要涉及大量的跳转指针操作。计算机通常是顺序执行一条一条的指令,如果有必要就通过寄存器跳转到特定的地址,再执行,然后通过
一系列机制返回原有的地址,继续顺序执行。计算机里,内存保存指令和数据,CPU负责解释和执行这些指令。 郝智宇 无转载 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000

《Linux内核分析》第一周学习小结 计算机是如何工作的?的更多相关文章

  1. LINUX内核分析第一周学习总结——计算机是如何工作的

    LINUX内核分析第一周学习总结——计算机是如何工作的 张忻(原创作品转载请注明出处) <Linux内核分析>MOOC课程http://mooc.study.163.com/course/ ...

  2. Linux内核分析第一周学习博客 --- 通过反汇编方式学习计算机工作过程

    Linux内核分析第一周学习博客 通过反汇编方式学习计算机工作过程 总结: 通过这次对一个简单C程序的反汇编学习,我了解到计算机在实际工作工程中要涉及大量的跳转指针操作.计算机通常是顺序执行一条一条的 ...

  3. linux内核分析第一周学习笔记

    linux内核分析第一周学习笔记 标签(空格分隔): 20135328陈都 陈都 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.co ...

  4. LINUX内核分析第二周学习总结——操作系统是如何工作的

    LINUX内核分析第二周学习总结——操作系统是如何工作的 张忻(原创作品转载请注明出处) <Linux内核分析>MOOC课程http://mooc.study.163.com/course ...

  5. Linux内核分析第一周学习总结:计算机是如何工作的?

    韩玉琪 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.冯诺依曼体系 ...

  6. 20135320赵瀚青LINUX内核分析第一周学习笔记

    赵瀚青原创作品转载请注明出处<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.概述 第一周的学习内容主 ...

  7. Linux内核分析——第一周学习笔记20135308

    第一周 计算机是如何工作的 第一节 存储程序计算机工作模型 1.冯·诺依曼结构模型:冯·诺依曼结构也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构.程序指令存储地址和数据存储 ...

  8. Linux内核分析——第一周学习笔记

    20135313吴子怡.北京电子科技学院 chapter 1 知识点梳理 第一节 存储程序计算机工作模型 1.冯诺依曼体系结构:即具有存储程序的计算机体系结构.目前大多数拥有计算和存储功能的设备(智能 ...

  9. Linux内核设计第一周学习总结 计算机如何工作

    北京电子科技学院 20135310陈巧然 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-100002 ...

随机推荐

  1. 团队作业——Beta冲刺5

    团队作业--Beta冲刺 冲刺任务安排 杨光海天 今日任务:完成详情预览界面的开发. 吴松青 今日任务:加入了详情界面的显示感想部分,并完成部分布局. 赖志平 今日任务:美化界面,配图配色,功能完善, ...

  2. swift语言的特征:类型系统与函数式编程:swift是面向类型和面向函数编程的语言

    swift语言的特征: 类型系统:值类型与引用类型.泛型.协议类型 函数式编程:

  3. 乐视4.14硬件免费日de用户体验

    此贴用于记录2016年4月14日乐视硬件免费日购买X65超级电视的用户体验.后续将动态更新 我是乐视电视的第一批用户,从乐视上市第一批超级电视,我先后帮助家人.同事.朋友买了6台乐视超级电视,也算是乐 ...

  4. 如何为已有的类没有生成toString的方法增强生成toString方法

    1:只要提到增强,我的第一思路就是代理,动态代理.但是仅仅是一个toString其实没必要使用代理模式了,有点大材小用了(动态代理其实也是最后通过反射生成toString的方法). 2:简单粗暴,可以 ...

  5. Jmeter性能测试-分布式压力测试

    作为一个测试行业的菜鸟,由于投身于一个小公司,包揽所有的测试.刚开始的功能测试到接口测试,稳定性测试,兼容性测试等,一般由于是小项目所以对于性能有所忽略,也没怎么涉及,公司接了个大项目,后期对于性能上 ...

  6. Kubernetes1.91(K8s)安装部署过程(七)--coredns安装

    为了是集群内的服务能使用dns进行服务解析,集群内需要使用dns服务器,可以按照kube官方dns,即kubedns或者其他的dns,比如coredns, 本例中按照的为coredns,按照简单,编辑 ...

  7. leetcode63—Unique Path II

    A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below). The ...

  8. lvs+dr模式(关键操作)

    1)  IP配置(配置回环接口添加虚拟ip,让他代为转发) /sbin/ifconfig lo:0 192.168.1.96 broadcast 192.168.1.96 netmask 255.25 ...

  9. (二)Lua脚本语言入门(关于函数)

    上一篇文章忘了插入代码了,方便粘贴复制...... 函数 对于c语言就是 void aa()//c语言是用void { print("这是一个函数") } Lua就变成了 func ...

  10. golang postgresql CRUD

    package main import ( "database/sql" "fmt" "log" _ "github.com/li ...