Linux内核分析 实验一 ——by王玥

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux内核分析 实验一 ——by王玥相关的知识,希望对你有一定的参考价值。

一、实验内容

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

使用

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

 

命令编译成汇编代码,如下代码中的数字请自行修改以防与他人雷同

 

  1. int g(int x)
  2. {
  3.   return x + 3;
  4. }
  5.  
  6. int f(int x)
  7. {
  8.   return g(x);
  9. }
  10.  
  11. int main(void)
  12. {
  13.   return f(8) + 1;
  14. }

 

2)根据本周所学知识分析汇编代码的工作过程,撰写一篇署名博客,并在博客文章中注明“真实姓名(与最后申请证书的姓名务必一致) + 原创作品转载请注明出处 + 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ”,博客内容的具体要求如下:

  •  

    题目自拟,内容围绕计算机是如何工作的进行;

  •  

    博客中需要使用实验截图

  •  

    博客内容中需要仔细分析汇编代码的工作过程中堆栈的变化

  •  

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

 

3)请提交博客文章URL到网易云课堂MOOC平台,编辑成一个链接可以直接点击打开。

 二、实验截图

1.编写C程序并进行反汇编:

技术分享

2.使用vim.s查看反汇编后的结果:

技术分享

 

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

技术分享

                                         

三、总结

    通过这次实验,我巩固了汇编中所学的知识,对计算机的工作方式有了更加深刻的了解。对X86汇编指令以及各类寄存器的作用更加清晰,明白了linux内核使用的是AT&T汇编格式。知道了函数调用堆栈是理解C代码在CPU上执行的关键以及函数调用堆栈是由逻辑上多个堆栈叠加起来的。计算机的基本原理是存储程序和程序控制。预先要把指挥计算机如何进行操作的指令序列(称为程序)和原始数据通过输入设备输送到计算机内存贮器中。每一条指令中明确规定了计算机从哪个地址取数,进行什么操作,然后送到什么地址去等步骤。

以上是关于Linux内核分析 实验一 ——by王玥的主要内容,如果未能解决你的问题,请参考以下文章

“Linux内核分析”实验三报告

Linux内核分析作业一

20169217 《Linux内核原理与分析》 课程总结

《Linux内核分析》实验一

Linux内核分析—完成一个简单的时间片轮转多道程序内核代码

“Linux内核分析”实验三