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语言程序运行时 ...
随机推荐
- git版本管理工具-git的概述
什么是git Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目的一种工具 Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不 ...
- python第三十四课——1.匿名函数的定义和使用
演示匿名函数的定义和使用 # 定义无参有返回值的有名函数: def func(): return True # 定义无参有返回值的匿名函数 f=lambda : True # 调用有名函数执行 pri ...
- OpenCV (C++) 几何形状识别(面积过滤、横纵比过滤等等)
#include <opencv2/opencv.hpp> #include <iostream> #include <math.h> using namespac ...
- Tornado框架实现异步爬虫
from urllib.parse import urljoin from bs4 import BeautifulSoup from tornado import gen, httpclient, ...
- Python2.7-sched
sched 模块,实现了简单的事件按计划时间表执行的功能,缺点在于运行的时候会占用主线程,直到事件执行完毕,更好的方法是用 threading.Timer 类 创建实例方法: sched.schedu ...
- jsp运算符
一.执行运算: 支持四则运算.关系(>;<....),逻辑运算(&&.||) 注意: +:只能进行加法运算,字符串形式的数字可以进行加法运算,这里的+号不能进行字符串的拼接 ...
- (四) DRF认证, 权限, 节流
一.Token 认证的来龙去脉 摘要 Token 是在服务端产生的.如果前端使用用户名/密码向服务端请求认证,服务端认证成功,那么在服务端会返回 Token 给前端.前端可以在每次请求的时候带上 To ...
- 树莓派学习笔记(2):常用linux命令
转载请注明:@小五义http://www.cnblogs.com/xiaowuyi 1.ls命令:列出文件目录的常用命令,主要参数见下表. -a 列出目录下的所有文件,包括以.开头的隐含文件. -b ...
- Java 将任意数组的任意两个位置的数据进行交换
package yw.fanxing; /** * 自定义泛型测试 * * 写一个方法,将任意数组的任意两个位置的数据进行交换 * * @author yw-tony * */ public clas ...
- ceph 池管理
存储池的概念:比如有10个1T的硬盘,作为一个集群,那就可以在这个集群里划分几个池,给不同的组件使用 问题描述: 删除pool的时候提示下面的错误: ceph osd pool delete test ...