《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内核原理与分析》第二周作业的更多相关文章

  1. 2019-2020-1 20199303<Linux内核原理与分析>第二周作业

    2019-2020-1 20199303第二周作业 1.汇编与寄存器的学习 寄存器是中央处理器内的组成部份.寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令.数据和位址.在中央处理器的控制部件中 ...

  2. 20169219 linux内核原理与分析第二周作业

    "linux内核分析"的第一讲主要讲了计算机的体系结构,和各寄存器之间对数据的处理过程. 通用寄存器 AX:累加器 BX:基地址寄存器 CX:计数寄存器 DX:数据寄存器 BP:堆 ...

  3. 2019-2020-1 20199314 <Linux内核原理与分析>第二周作业

    1.基础学习内容 1.1 冯诺依曼体系结构 计算机由控制器.运算器.存储器.输入设备.输出设备五部分组成. 1.1.1 冯诺依曼计算机特点 (1)采用存储程序方式,指令和数据不加区别混合存储在同一个存 ...

  4. Linux内核原理与分析-第二周作业

    写之前回看了一遍秒速五厘米:如果

  5. Linux内核原理与分析-第一周作业

    本科期间,学校开设过linux相关的课程,当时的学习方式主要以课堂听授为主.虽然老师也提供了相关的学习教材跟参考材料,但是整体学下来感觉收获并不是太大,现在回想起来,主要还是由于自己课下没有及时动手实 ...

  6. 2019-2020-1 20199314 <Linux内核原理与分析>第一周作业

    前言 本周对实验楼的Linux基础入门进行了学习,目前学习到实验九完成到挑战二. 学习和实验内容 快速学习了Linux系统的发展历程及其简介,学习了下的变量.用户权限管理.文件打包及压缩.常用命令的和 ...

  7. 2018-2019-1 20189221《Linux内核原理与分析》第一周作业

    Linux内核原理与分析 - 第一周作业 实验1 Linux系统简介 Linux历史 1991 年 10 月,Linus Torvalds想在自己的电脑上运行UNIX,可是 UNIX 的商业版本非常昂 ...

  8. 2020-2021-1 20209307 《Linux内核原理与分析》第九周作业

    这个作业属于哪个课程 <2020-2021-1Linux内核原理与分析)> 这个作业要求在哪里 <2020-2021-1Linux内核原理与分析第九周作业> 这个作业的目标 & ...

  9. 20169212《Linux内核原理与分析》第二周作业

    <Linux内核原理与分析>第二周作业 这一周学习了MOOCLinux内核分析的第一讲,计算机是如何工作的?由于本科对相关知识的不熟悉,所以感觉有的知识理解起来了有一定的难度,不过多查查资 ...

随机推荐

  1. Python转码问题

    在Python中,可以对String调用decode和encode方法来实现转码.   比如,若要将某个String对象s从gbk内码转换为UTF-8,可以如下操作 s.decode('gbk').e ...

  2. apache2.4下载与安装

    step1 下载apache 百度“apache下载”,找到官网链接,如下 2. 点进去后选择 Files for microsoft windows,如下 3. 前三个任选一个,这里我们选第一个,如 ...

  3. php的一些数组用法

    数组分割 array_chunk(); 比较数组 1. array_diff() array_diff_assoc() 2. array_filter(); functionodd($var){ re ...

  4. QPixmap,QImage图片大小缩放linux版

    注意事项: 1.装载图片的地址有时候会读取不到.可以多摸索一下当前系统对应的格式. 2.scaled缩放方式选择 3.注意保存路径.下面程序保存路径是当前执行文件目录中. PicOpera::PicO ...

  5. windows通过Composer安装yii2

    1. php.ini 中;extension=php_openssl.dll(取消注释,不然在安装composer过程中会报错) 集成环境最好去php目录中打开php.ini文件,确定;extensi ...

  6. 几个模式识别和计算机视觉相关的Matlab工具箱

    模式识别.计算机视觉.图像处理等领域大部分是对一些图像等数据的处理,比较常用的语言是C++和Matlab,相应也对应很多库,象opencv等,都是很好用功能也很强大,但是对于数据处理更方便的应该还是M ...

  7. hg vs git :这个世界除了svn还有别的

    最近想用版本控制软件来保存汉化文件,但又觉得SVN太麻烦,于是想到了最近较为流行的分布式版本控制工具.而Git和Mercurial(意思为水银的,于是经常缩写为Hg)自然是其中最为流行的工具.大名鼎鼎 ...

  8. android ADT Bundle for Mac下载地址

    直接下载解压就能用 http://developer.android.com/sdk/index.html

  9. 【测试】解决loadrunner11无法运行负载测试

    问题: LoadRunner11版,录制完脚本,准备运行时提示‘ loadrunner controller 无法创建 vuser 确保您的 load generator ’, 脚本已经录好,但是运行 ...

  10. dump iot表

    SQL> create user scan identified by scan default tablespace users; User created. SQL> grant db ...