Linux内核分析— —计算机是如何工作的(20135213林涵锦)
实验部分
(以下命令为实验楼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
Linux内核分析— —计算机是如何工作的(20135213林涵锦)的更多相关文章
- LInux内核分析——计算机是如何工作的进行
万子惠 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 " 实 ...
- linux内核分析--计算机是如何工作的
实验部分 使用gcc -S -o main.s main.c -m32命令将源代码编译成汇编代码. 源代码如下: int g(int x) { return x + 9; } int f(int x) ...
- Linux内核分析——计算机是如何工作的
马悦+原创作品转载请注明出处+<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.计算机是如何工作的 ( ...
- Linux内核分析 计算机是如何工作的——by王玥
1.冯诺依曼体系结构:也就是指存储程序计算机 硬件(存储程序计算机工作模式): 软件(程序员角度): 2.API:程序员与计算机的接口界面 ABI:程序与CPU的接口界面 3.X86的实现: 4.X8 ...
- Linux内核分析——操作系统是如何工作的
万子惠 + 原创作品转载请注明出处 + <Linux内核分析> 实验部分 使用实验楼的虚拟机打开shell 然后cd mykernel 您可以看到qemu窗口输出的内容的代码mymain. ...
- Linux内核分析— —操作系统是如何工作的(20135213林涵锦)
mykernel实验指导(操作系统是如何工作的) 实验要求 运行并分析一个精简的操作系统内核,理解操作系统是如何工作的 使用实验楼的虚拟机打开shell cd LinuxKernel/linux-3. ...
- linux内核分析--操作系统是如何工作的?
一个简单的时间片轮转多道程序 操作系统的"两把剑":中断上下文(保存现场和恢复现场)和进程上下文的切换 源代码的分析 *使用的源代码为视频中所使用的精简内核的源代码 首先分析myp ...
- Linux内核分析--操作系统是如何工作的
“平安的祝福 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ” 一.初 ...
- 20135239益西拉姆 Linux内核分析 操作系统是怎样工作的?
益西拉姆+ 原创作品+ <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ” 堆栈 堆栈是C语言程序运行时 ...
随机推荐
- DevExpress12、DocumentManager
DocumentManager控件 你用过Photoshop吗?里面每打开一个照片,就有一个小窗体承载这个照片,你可以在这些小窗体间切换,最小化.最大化.排列窗体, 这些操作都在Photoshop的大 ...
- numpy 的排序
import numpy as np # 1.快速排序 ''' 1.np.sort(),不改变原先值的顺序,但是在运行时占内存 2.ndarry.sort(),改变原先值的顺序,不占用内存 ''' # ...
- CentOS7.5搭建Flask环境python3.6+mysql+redis+virtualenv
wget安装环境装备 yum install gcc patch libffi-devel python-devel zlib-devel bzip2-devel openssl-devel ncur ...
- <数据结构与算法分析>读书笔记--实现泛型构件pre-Java5
面向对象的一个重要目标是对代码重用的支持.支持这个目标的一个重要的机制就是泛型机制:如果除去对象的基本类型外,实现的方法是相同的,那么我们就可以用泛型实现来描述这种基本的功能. 1.使用Object表 ...
- [转]在C++中容易出现的#error No Target Architecture
项目环境:win 7 64位,编译环境:VS2013 最近在写C++的项目,发现了自己很多不会的地方,这也使得我在C++中的成长变得比较快,下面我就说说我自己在写项目是遇到的一些问题,希望可以帮到一些 ...
- JS 点击元素发ajax请求 打开一个新窗口
JS 点击元素发ajax请求 打开一个新窗口 经常在项目中会碰到这样的需求,点击某个元素后,需要发ajax请求,请求成功以后,开发需要把链接传给前端(或者说请求成功后打开新窗口),前端需要通过新窗口打 ...
- Python2.7-glob
glob 模块,寻找所有匹配指定的模式的路径名,利用的是 Unix shell 的规则,可以在 Windows 环境下使用.模块是通过 os.listdir() 和 fnmatch.fnmatch() ...
- 【转】PHP 类与对象
原文:http://blog.csdn.net/e421083458/article/details/8217650 1.类与对象 对象:实际存在该类事物中每个实物的个体.$a =new User() ...
- 基于Python自动上传包到nexus仓库
1.设计思路 用户通过excel表格的形式填写包的信息,并将包一起发送给负责人 2.代码实现 #coding:utf8 import os import xlrd def GetData(fileNa ...
- 利用Cydia Substrate进行Android HOOK
Cydia Substrate是一个代码修改平台.它可以修改任何主进程的代码,不管是用Java还是C/C++(native代码)编写的.而Xposed只支持HOOK app_process中的java ...