您的位置:首页 > 理论基础

Linux内核分析— —计算机是如何工作的(20135213林涵锦)

2016-02-28 18:00 381 查看

实验部分

(以下命令为实验楼64位Linux虚拟机环境下适用,32位Linux环境可能会稍有不同)

使用

gcc –S –o main.s main.c -m32

命令编译成汇编代码,

int g(int x)

{

return x + 6;

}

int f(int x)

{

return g(x);

}

int main(void)

{

return f(13) +2;

}

1. 实验截图

复制代码到实验楼



编译,打开main.s(打开前忘记截图,改完后截的图)



删完冗余部分,剩下的汇编代码



2.分析汇编代码的工作过程中堆栈的变化







3.总结部分需要阐明自己对“计算机是如何工作的”理解。



首先是了解计算机的工作模型://图以及解说源自百度

(冯·诺依曼体系结构:把程序本身当作数据来对待,程序和该程序处理的数据用同样的方式储存。数字计算机的数制采用二进制;计算机应该按照程序顺序执行。)



按老师给的图也挺好理解://图及解说源自云课堂截图



IP:寄存器,总是指向内存的代码段。 内存:保存数据和指令。

CPU:CPU从IP指向的内存地址取指令执行,执行之后IP自加一,然后继续执行。

然后我们可以大概了解计算机是如何工作的:

先在内存中运行第一条指令,然后根据其指令的内容及要求,从存储器中取出相应的数据在CPU中执行,最后根据地址将结果返回到内存之中。

重复这样的步骤直到停止指令出现或完成所有指令。

注:

姓名:林涵锦

《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: