《Linux内核分析》第一周 理解计算机是如何工作的
来源:互联网 发布:用一套好还是用淘宝好 编辑:程序博客网 时间:2024/04/29 06:45
何舒浩 原创作品转载请注明出处 + 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000
计算机是通过CPU一条一条地读取内存的指令并且执行来完成工作的。通过汇编代码,我们深入分析这个过程。
在此之前,补充几个我一下子没有反应过来的名词:
1. 寄存器是CPU的一部分(而不属于内存),用于存储运算过程中需要用到或者产生的数据。
2. 指令是类似这样的语句: movl %eax %edx。
常见寄存器有:
1. %eax 返回值默认寄存器
2. %ebp 栈底寄存器
3. %esp 栈顶寄存器
4. %eip 指向下一条指令的寄存器。也就是所谓的ip
常见的指令有:
1. movl (类似赋值)
2. push (入栈)
3. pop (出栈)
4. call (函数调用)
5. ret (return 返回)
6. add (加)
7. sub (减)
具体来看
mov指令当中的%eax表示寄存器,$0x123表示立即数, 0x123表示这被解释为内存地址。带括号的(%ebx)表示这个寄存器的值被解释成内存地址。
push 是将%esp向下增长一位(4 bytes),然后把%eax的值赋值给%esp所指向的内存空间。
pop 先是把%esp空间的值赋值给%eax,然后将%esp向上缩减一位。
call 先保存%eip到当前栈顶的下一位(函数返回后需要找到原%eip,以便继续执行下边的语句),然后对%eip赋值。那么下一句被执行的语句就是新%eip所指向的语句。
ret 把栈顶(%esp)保存的内容(就是函数执行前的%eip)赋值给%eip,然后回退一位。
enter
leave 将栈顶退回到函数执行前的栈顶,再将ebp回退到函数执行前的栈底。(恢复性工作)
下面分析一个具体的程序:
基于实验楼提供的实验环境 https://www.shiyanlou.com/courses/running/555
通过反汇编得到main.s(经过删减)
gcc -S -o main.s main.c
分析过程如下:
。。。 改天补充 。。。
- 《Linux内核分析》第一周 理解计算机是如何工作的
- 计算机是如何工作的|Linux内核分析 第一周作业 - 网易云课堂
- LINUX内核分析第一周学习总结:计算机是如何工作的?
- 《Linux内核分析》 之 计算机是如何工作的。1
- Linux内核分析 计算机是如何工作的? 学习笔记
- Linux内核分析01-分析汇编代码理解计算机是如何工作
- 《Linux内核分析》之图解汇编代码以分析计算机是如何工作的
- 云课堂 Linux内核分析 通过反汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的
- 云课堂-linux内核分析:通过反汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的
- Linux内核分析 实验一:通过汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的
- Linux内核分析课程1_计算机是如何工作的
- Linux内核分析作业1_计算机是如何工作的
- 2017年,Linux内核分析,计算机是如何工作的进行,ustc se,SA16225161,梁昱森
- 《Linux内核分析》 之 操作系统是如何工作的。2
- linux下反汇编一个程序,并通过分析汇编代码理解计算机是如何工作的
- Linu内核分析一 通过反汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的
- Linux内核分析_汇编理解计算机工作
- 通过分析汇编代码来理解计算机是如何工作
- android下使用gzip压缩提升访问server api的效率
- 2016关键词
- Python图像处理库PIL的ImageFont模块介绍
- 算法代码实现之归并排序,C/C++实现,自顶向下与自底向上两种方式
- Java正则表达式
- 《Linux内核分析》第一周 理解计算机是如何工作的
- Java ThreadLocal原理与源码
- windows下ffmpeg录制摄像头内容
- 《现代操作系统》读书笔记
- 基于51单片机的稳压电压
- 百度地图图片叠加层切片工具:制作边界透明覆盖物
- gradle与gradle wrapper关系,以及版本关系
- 通过登录窗口调用主窗口的办法、禁止线程多开
- 不让苹果开发者账号折磨我