20169210《Linux内核原理与分析》第二周作业
《Linux内核原理与分析》第二周作业
本周作业分为两部分:第一部分为观看学习视频并完成实验楼实验一;第二部分为看《Linux内核设计与实现》1、2、18章并安装配置内核。
第一部分
本部分主要是观看孟老师的学习视频,学习计算机是如何工作的,并根据提示完成实验。
寄存器
通用寄存器:
- AX:累加器
- BX:基地址寄存器
- CX:计数寄存器
- DX:数据寄存器
- BP:堆栈基址针
- SI、DI:变址寄存器
- SP:堆栈顶指针
段寄存器:
- CS:代码段寄存器,指向包含程序指令的段。
- SS:栈段寄存器,指向包含当前程序栈的段。
- DS:数据段寄存器,指向包含静态数据或者全局数据段。
- ES:附加寄存器,指向附加数据段。
寻址方式
- movl %eax,%edx edx=eax 寄存器寻址
- movl $0x123,%edx edx=0x123 立即寻址
- movl 0x123,%edx edx=*(int32_t)0x123 直接寻址
- movl (%ebx),%edx edx=(int32_t)ebx 间接寻址
- movl 4(%ebx),%edx edx=(int32_t)(ebx+4) 变址寻址
b、w、l、q分别代表8位、16位、32位和64位。
实验
实验一为反汇编一段c语言代码。
首先用如下命令输入一段C语言代码
$vi main.c
然后用如下命令反汇编
$gcc -S -o main.s main.c -m32
其中gcc命令及其相关命令如下图所示

用如下命令查看汇编代码
$vi main.s
前面带“ . ”的语句是用于链接辅助信息的,并不会执行,所以要去掉,结果如下
g:
pushl %ebp
movl %esp, %ebp
movl 8(%ebp), %eax
addl $3, %eax
popl %ebp
ret
f:
pushl %ebp
movl %esp, %ebp
subl $4, %esp
movl 8(%ebp), %eax
movl %eax, (%esp)
call g
leave
ret
main:
pushl %ebp
movl %esp, %ebp
subl $4, %esp
movl $8, (%esp)
call f
addl $1, %eax
leave
ret
具体的堆栈分析如下图所示


其中
pushl %ebp
表示压栈
popl %ebp
表示出栈
第二部分
本部分为阅读《Linux内核设计与实现》并安装好Linux内核。
首先用如下命令设置好root密码,并进入root用户。
$sudo passwd root
$su root
如图所示

接下来是安装git并下载安装包,命令如下
$apt-get update
$apt-get install git
如下图所示

由于下载的是linux-4.7.6.tar.xz,所以需要解压,命令如下
$cd Downloads
$tar -xvf linux-4.7.6.tar.xz
如下图所示

解压完成后进行配置,使用以下命令
$cd linux-4.7.6
$make menuconfig
结果如下

在配置时遇到了问题,暂时不知道什么原因,也不知道解决办法,等日后找到解决办法再更新。
20169210《Linux内核原理与分析》第二周作业的更多相关文章
- 2019-2020-1 20199303<Linux内核原理与分析>第二周作业
2019-2020-1 20199303第二周作业 1.汇编与寄存器的学习 寄存器是中央处理器内的组成部份.寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令.数据和位址.在中央处理器的控制部件中 ...
- 20169219 linux内核原理与分析第二周作业
"linux内核分析"的第一讲主要讲了计算机的体系结构,和各寄存器之间对数据的处理过程. 通用寄存器 AX:累加器 BX:基地址寄存器 CX:计数寄存器 DX:数据寄存器 BP:堆 ...
- 2019-2020-1 20199314 <Linux内核原理与分析>第二周作业
1.基础学习内容 1.1 冯诺依曼体系结构 计算机由控制器.运算器.存储器.输入设备.输出设备五部分组成. 1.1.1 冯诺依曼计算机特点 (1)采用存储程序方式,指令和数据不加区别混合存储在同一个存 ...
- Linux内核原理与分析-第二周作业
写之前回看了一遍秒速五厘米:如果
- Linux内核原理与分析-第一周作业
本科期间,学校开设过linux相关的课程,当时的学习方式主要以课堂听授为主.虽然老师也提供了相关的学习教材跟参考材料,但是整体学下来感觉收获并不是太大,现在回想起来,主要还是由于自己课下没有及时动手实 ...
- 2019-2020-1 20199314 <Linux内核原理与分析>第一周作业
前言 本周对实验楼的Linux基础入门进行了学习,目前学习到实验九完成到挑战二. 学习和实验内容 快速学习了Linux系统的发展历程及其简介,学习了下的变量.用户权限管理.文件打包及压缩.常用命令的和 ...
- 2018-2019-1 20189221《Linux内核原理与分析》第一周作业
Linux内核原理与分析 - 第一周作业 实验1 Linux系统简介 Linux历史 1991 年 10 月,Linus Torvalds想在自己的电脑上运行UNIX,可是 UNIX 的商业版本非常昂 ...
- 2020-2021-1 20209307 《Linux内核原理与分析》第九周作业
这个作业属于哪个课程 <2020-2021-1Linux内核原理与分析)> 这个作业要求在哪里 <2020-2021-1Linux内核原理与分析第九周作业> 这个作业的目标 & ...
- 20169212《Linux内核原理与分析》第二周作业
<Linux内核原理与分析>第二周作业 这一周学习了MOOCLinux内核分析的第一讲,计算机是如何工作的?由于本科对相关知识的不熟悉,所以感觉有的知识理解起来了有一定的难度,不过多查查资 ...
随机推荐
- clipboard让复制的文本换行
https://clipboardjs.com/dist/clipboard.min.js 用clipboard实现复制时, 想让复制的文本换行, 有两咱方法: 第一种, HTML实现: <!- ...
- 转载C#泛型集合—Dictionary<K,V>使用技巧
1.要使用Dictionary集合,需要导入C#泛型命名空间 System.Collections.Generic(程序集:mscorlib) 2.描述 1).从一组键(Key)到一组值(Value) ...
- 原生js判断是否有某个class,如果有就删掉,没有加上
<style> #div1 { width: 100px; height: 100px; position: absolute; } .div1 { background: red; } ...
- DOM中的范围 createRange()
学习<JavaScript 高级程序设计> 12章dom范围的笔记 dom2级在Document类型中定义了 createRange()方法: 创建range对象很简单 var range ...
- 关于谷歌浏览器下自动填写密码的bug
有的时候我们需要用到h5中input的新类型,type=password 这个可以很好的将输入的内容变成圆点,但是这样做也有一个小bug就是在某些我们不希望自动保存密码的页面中,也会出现浏览器自动帮我 ...
- dotnet core多平台开发体验
前言 随着net core rc2的发布,园子里面关于net core的入门文章也也多了起来,但是大多数都是在一个平台上面来写几个简单的例子,或者是在解释代码本身,并没有体现说在一个平台上面创建一个项 ...
- LightOJ_1248 Dice (III)
题目链接 题意: 给一个质地均匀的n的骰子, 求投掷出所有点数至少一次的期望次数. 思路: 这就是一个经典的邮票收集问题(Coupon Collector Problem). 投掷出第一个未出现的点数 ...
- Contest20140709 testA 树型DP
testA 输入文件: testA.in 输出文件testA.out 时限5000ms 问题描述: 一棵树N个节点,每条边有一个距W,现在定义SUM为所有dist(X,Y)的和1<=X<Y ...
- 【Java】java数据库连接池配置的几种方法
今天遇到了关于数据源连接池配置的问题,发现有很多种方式可以配置,现总结如下,希望对大家有所帮助:(已Mysql数据库为例) 一,Tomcat配置数据源: 方式一:在WebRoot下面建文件夹META- ...
- 支付宝openssl漏洞肆虐 互联网巨头称目前已修复
支付宝openssl漏洞肆虐 互联网巨头称目前已修复 金山毒霸安全专家李铁军表示,这个漏洞使黑客可以远程读取https服务器的随机64KB内存,“只要这个黑客有耐心多捕获多分析那些64KB的数据,用户 ...