博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux内核分析课程1_计算机是如何工作的
阅读量:4180 次
发布时间:2019-05-26

本文共 789 字,大约阅读时间需要 2 分钟。

Linux内核课第一周作业。本文在云课堂中实验楼完成。

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

--------------------------------------------------------分割线----------------------------------------------------------------------------------------------------

    计算机的工作过程可以用上面这个图来表示,但是计算机又是如何工作的呢?

    计算机的工作,一言以蔽之:执行程序的过程。因此分析计算机是如何工作的也就是分析计算机是如何执行程序的。了解了“程序存储”,再去理解计算机工作过程变得十分容易。如果想叫计算机工作,就得先把程序编出来,然后通过输入设备送到存储器保存起来,即程序存储。下面就是执行程序的问题。根据冯·诺依曼的设计,计算机应能自动执行程序,而执行程序又归结为逐条执行指令。执行一条指令又可分为以下4个基本操作:

  ①取出指令:从存储器某个地址中取出要执行的指令送到CPU内部的指令寄存器暂存。

  分析指令:把保存在指令寄存器中的指令送到指令译码器,译出该指令对应的微操作。
  执行指令:根据指令译码,向各个部件发出相应控制信号,完成指令规定的各种操作。
  为执行下一条指令作好准备,即取出下一条指令地址。

实验:

1.代码

int g(int x)

{

return x + 10;

}

int f(int x)

{

return g(x);

}

int main(void)

{

return f(20) + 8;

}

2.相应汇编为(去掉相应的辅助信息)

3.堆栈变化示意图

你可能感兴趣的文章
《Linux内核编程》第七章:USB CORE与USB键鼠驱动
查看>>
《Android系统学习》之JAVA与C混合编程——JNI
查看>>
《C预处理》之#ifndef
查看>>
Android边录边播应用
查看>>
《Linux内核编程》第十三章:Linux对进程内存的二级页式管理
查看>>
ARM协处理器
查看>>
《miniOS分析》前言
查看>>
《Linux内核编程》第十四章:Linux驱动基础
查看>>
Linux平台下ARM-Linux交叉编译工具链
查看>>
Window平台下ADS自带ARMCC编译工具链
查看>>
micro2440/tiny6410使用JLINK直接烧录nand flash
查看>>
C编译器、连接器与可执行机器码文件
查看>>
android linker 浅析
查看>>
802.11 traffic id
查看>>
Android系统wifi分析-手动连接过程
查看>>
设置IP别名Shell脚本
查看>>
Source Insight 宏-单行注释
查看>>
levelDB源码分析-Arena
查看>>
levelDB源码分析-SSTable
查看>>
平滑升级Nginx的Shell脚本
查看>>