【李行之原创作品 转载请注明出处 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000

《Linux内核分析》 之 计算机是如何工作的

第一讲 冯 诺依曼体系结构

1.冯 诺依曼体系结构是指具有存储程序的计算机系统

  1. 硬件:CPU与内存通过主线连接;CPU上有一块寄存器叫做IP,该寄存器相当于指针,总是指向内存的代码段;CPU总是执行IP指向的指令然后IP自加一
  2. 软件(计算机如何识别指令):通过ABI(程序与计算机的接口界面)

2.大多数指令可以直接访问内存

第二讲 X86汇编基础

1. X86寄存器详解(以64位为例)

2.CPU实际取指令的时候通过cs:eip来描述

3.常见的寻址方式

  1. 寄存器寻址(操作的都是寄存器):将eax的值直接赋值给edx;
  2. 立即数寻址:将十六进制的数值123(这个立即数)直接放到edx中(和内存也没有关系);
  3. 直接寻址:将0x123这个地址所指向的内存数据放到寄存器edx中;
  4. 间接寻址:将ebx的值作为一个内存地址,这个地址所存储的数据放到edx中;
  5. 变址寻址:与间接寻址类似,是把ebx的值加上4作为地址

4.几条重要指令

%ebp是栈底指针;%esp是栈顶指针。函数的堆栈就由这两个指针划定。

5.练习二

【分析】

  1. 函数应该如下:

    int g(int x)
    {
    return x+8;
    }
    int main(void)
    {
    return g(x)-8;
    }

第三讲 汇编一个简单的C语言程序(实验)

【以自己的实验过程为例】

  1. 进入实验环境,编写简单的C程序

  2. 进行汇编

  1. 保存
  2. 根据day_01.s汇编代码分析堆栈变化

总结

【计算机是如何工作的】

  1. 硬件:冯诺依曼结构 (CPU+内存);
  2. 软件:利用堆栈为函数运行创造条件;同时使用分级存储使得数据和程序无差别的以同样规格进行存储

《Linux内核分析》 之 计算机是如何工作的的更多相关文章

  1. Linux内核分析之计算机是如何工作的

    一.计算机工作原理 本周实验主要是反汇编C代码,生成汇编程序.冯·诺依曼理论的要点是:数字计算机的数制采用二进制,计算机应该按照程序顺序执行.人们把冯·诺依曼的这个理论称为冯·诺依曼体系结构.CPU通 ...

  2. Linux内核分析之操作系统是如何工作的

    在本周的课程中,孟老师主要讲解了操作系统是如何工作的,我根据自己的理解写了这篇博客,请各位小伙伴多多指正. 一.知识点总结 1. 三个法宝 存储程序计算机:所有计算机基础性的逻辑框架. 堆栈:高级语言 ...

  3. linux内核分析作业:以一简单C程序为例,分析汇编代码理解计算机如何工作

    一.实验 使用gcc –S –o main.s main.c -m32 命令编译成汇编代码,如下代码中的数字请自行修改以防与他人雷同 int g(int x) { return x + 3; } in ...

  4. 《Linux内核分析》第一周 计算机是如何工作的?

    刘蔚然 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000] WEEK ONE(2. ...

  5. LInux内核分析——计算机是如何工作的进行

    万子惠 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 " 实 ...

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

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

  7. 《Linux内核分析》第一周笔记 计算机是如何工作的

    一.计算机是如何工作的? 1.存储程序计算机工作模型 1)冯诺依曼体系结构 学习研究计算机的基本概念.就是指存储程序计算机.所有的有计算功能的电子设备小到计算器,大到超级计算机核心部分都可以用这种体系 ...

  8. 《Linux内核分析》第一周学习小结 计算机是如何工作的?

    <Linux内核分析>第一周.计算机是如何工作的? 20135204 郝智宇  一.存储程序计算机工作模型 1.      冯诺依曼体系结构: 数字计算机的数制采用二进制:计算机应该按照程 ...

  9. linux内核分析--计算机是如何工作的

    实验部分 使用gcc -S -o main.s main.c -m32命令将源代码编译成汇编代码. 源代码如下: int g(int x) { return x + 9; } int f(int x) ...

随机推荐

  1. ab参数详解 – 压力测试

    命令参数:    -n requests     Number of requests to perform    //在测试会话中所执行的请求个数.默认时,仅执行一个请求    -c concurr ...

  2. APP性能测试,网易Emmagee工具

    APK地址:https://github.com/NetEase/Emmagee/releases/download/V1.2.1/Emmagee-1.2.1.apk 开源代码github地址:htt ...

  3. VS2012中使用SOS调试CLR

    之前看了<用WinDbg探索CLR世界>的一些列文章,发现SOS真的是一个非常好的调试.net的工具, 然后又惊喜的在http://blogs.msdn.com/b/marioheward ...

  4. BZOJ4245:[ONTAK2015]OR-XOR(贪心)

    Description 给定一个长度为n的序列a[1],a[2],...,a[n],请将它划分为m段连续的区间,设第i段的费用c[i]为该段内所有数字的异或和,则总费用为c[1] or c[2] or ...

  5. Spring配置之context:annotation与、component-scan以及annotation-driven

    spring boot帮助我们隐藏了大量的细节,有些配置spring boot都是开启的,因此当我们查看遗留项目使用spring时候遇见问题一定细心排查 <!-- context:annotat ...

  6. Scala学习之路 (一)Scala的安装

    1.Scala下载 版本选择,看spark官网 http://spark.apache.org/docs/latest/ spark2.3.0版本是用2.11版本的Scala进行开发的,所以此处下载S ...

  7. java代码,在linux上删除文件

    1.其实在linux上和window是一样的 2.path 传入的路径(直接从根目录到你的文件的位置) public static boolean delFile(String path) { log ...

  8. 如何将tensor的内容输出到文本文件

    local part2 = self.convModel:forward({linputs, rinputs}) ) local file = io.open('/home/xbwang/Deskto ...

  9. 2018-2019-2 20165302 《网络对抗技术》Exp3 免杀原理与实践

    一,实验要求 (我是真的不知道为什么截图中都有学号和姓名信息了还要求改主机名......而且实验要求里也没有明确说.做完之后听别人说的,肯定是不能重新截图了,要扣分就扣吧) 通过本部分内容的学习,认识 ...

  10. android 7.0拍照问题file:///storage/emulated/0/photo.jpeg exposed beyond app through ClipData.Item.getUri

    Android7.0调用相机时出现新的错误: android.os.FileUriExposedException: file:///storage/emulated/0/photo.jpeg exp ...