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.堆栈变化示意图