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. int f(int x)
  6. {
  7. return g(x);
  8. }
  9. int main(void)
  10. {
  11. return f(8) + 1;
  12. }

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上执行的关键以及函数调用堆栈是由逻辑上多个堆栈叠加起来的。计算机的基本原理是存储程序和程序控制。预先要把指挥计算机如何进行操作的指令序列(称为程序)和原始数据通过输入设备输送到计算机内存贮器中。每一条指令中明确规定了计算机从哪个地址取数,进行什么操作,然后送到什么地址去等步骤。

时间: 2024-10-12 20:02:35

Linux内核分析 实验一 ——by王玥的相关文章

“Linux内核分析”实验一

"Linux内核分析"实验一 作者:何振豪 原创作品转载请注明出处 http://www.cnblogs.com/scoyer/p/6411414.html <Linux内核分析>MOOC课程 http://mooc.study.163.com/course/USTC-1000029000 计算机由硬件和软件组成,硬件主要是CPU和内存,软件是系统软件和应用软件.最开始的计算机是由冯诺依曼提出的存储程序的思路开始的,这就对应硬件的CPU和内存,CPU执行指令,指令和相关数据

Linux内核分析 实验三:跟踪分析Linux内核的启动过程

贺邦 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程 http://mooc.study.163.com/course/USTC-1000029000 一. 实验过程 1.打开shell,输入启动指令,内核启动完成后进入menu程序,支持三个命令help.version和quit. 2.然后使用gdb跟踪调试内核,输入命令qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img -s -S 3.按住

Linux内核分析实验五

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 刘旸 + 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 在操作系统上运行的某个应用程序,如果

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

构造一个简单的Linux系统 张文俊+原创作品转载请注明出处+<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 实验内容: 一.gdb跟踪调试内核从start_kernel到init进程启动 1.qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img -s -S # 关于-s和-S选项的说明: // -S freeze CPU at s

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

张文俊 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.第二周学习内容总结 1.计算机工作“三大法宝” 首先,计算机工作原理最重要的三个内容就是:存储程序计算机工作模型.中断机制和函数调用堆栈. 存储程序计算机工作模型是计算机系统最最基础性的逻辑结构: 中断机制是多道程序操作系统的基点,没有中断机制程序只能从头一直运行结束才有可能开始运行其他程序: 函数调用堆栈是高级语言得以

“Linux内核分析”实验三

跟踪分析Linux内核的启动过程 作者:何振豪 原创作品转载请注明出处 http://www.cnblogs.com/scoyer/p/6516032.html <Linux内核分析>MOOC课程 http://mooc.study.163.com/course/USTC-1000029000 这节课讲了如何查看linux内核源代码,构造一个简单的linux系统(算不上构造,实际上就是编译内核,然后打包git上的根文件系统,然后启动这个简单系统而已),最后还讲了如何利用gdb来跟踪调试linu

“Linux内核分析”实验报告

Linux内核分析:实验一 潘俊洋 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 计算机体系结构与程序运行过程 现代计算机大都采用的是“冯.诺依曼”体系结构,它的核心思想是:程序存储,指令和数据不加区分的放在一个存储器中.由指令指针寄存器保存着下一条将要执行指令的地址,这个寄存器在32位系统中叫eip,64位系统中叫rip. 指令是用二进制编码的,难于记忆.为了更有效的编写程序,人们就

Linux内核分析—实验五分析system_call中断处理过程

郑斌 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 实验要求: 使用gdb跟踪分析一个系统调用内核函数(您上周选择的那一个系统调用),系统调用列表参见http://codelab.shiyanlou.com/xref/linux-3.18.6/arch/x86/syscalls/syscall_32.tbl ,推荐在实验楼Linux虚拟机环境下完成实验. 根据本周所学知识分析系

【MOOC EXP】Linux内核分析实验七报告

程涵  原创博客 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 可执行程序的装载 知识点梳理 一.预处理.编译.链接和目标文件的格式 可执行程序是如何得来的 C源代码(.c)经过编译器预处理被编译成汇编代码(.asm) 汇编代码由汇编器被编译成目标代码(.o) 将目标代码链接成可执行文件(a.out) 可执行文件由操作系统加载到内存中执行 vi hello.c gcc -E -o hello.cpp hell