《linux内核分析》第一周(2.22~2.28)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《linux内核分析》第一周(2.22~2.28)相关的知识,希望对你有一定的参考价值。
潘恒 原创作品转载请注明出处 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000
计算机是如何工作的?
本节课主要通过了解分析汇编代码来理解计算机工作原理
- 存储程序计算机
- 冯诺依曼体系结构:具有存储程序的计算机体系结构;是目前大多数拥有计算和存储功能的设备的核心。
- 硬件角度:CPU与内存通过主线连接,CPU上的IP(可能是16、32、64位)总指向内存的某一块区域;IP指向的CS(代码段)也在内存中;CPU总是执行IP指向的指令。
- 软件角度:API(应用程序编程接口,与编程人员)与ABI(程序与CPU的借口界面) 是两个比较重要的软件接口
- x86汇编基础
- 64位CPU:与32位在核心机制上差别不大,64位的机器中,寄存器以RXX表示
- 常见汇编指令:
直接寻址、立即数寻址与变址寻址
Linux使用的A&T汇编格式与Intel汇编略有不同
以%标识的寄存器寻址不与内存“打交道”
- 汇编一个简单的C程序
具体步骤在实验楼中完成
- 将c代码编译为汇编代码:
gcc -S -o main.s main.c -m32
- 先完成main.c代码:
- 编译为汇编代码:
- 汇编代码:
5.工作过程中堆栈的变化:
总结:
关于我对“计算机如何工作的”理解:
首先,机器的操作对象其实就是数据,要操作这些数据只需用用最原始的机器语言即可,但是这些机器语言很复杂 所以有人将它翻译成汇编语言。计算机的执行指令都是机器语言,通过汇编语言和高级语言编出来的程序通过计算机内的编译程序,将程序编译成计算机可执行的文件来进行工作,交换数据。
计算机在运行时,先从内存中取出第一条指令,通过控制器的译码,按指令的要求,从存储器中取出数据进行指定的运算和逻辑操作等加工,然后再按地址把结果送到内存中去。接下来,再取出第二条指令,在控制器的指挥下完成规定操作。依此进行下去。直至遇到停止指令。程序与数据一样存贮,按程序编排的顺序,一步一步地取出指令,自动地完成指令规定的操作是计算机最基本的工作原理。
以上是关于《linux内核分析》第一周(2.22~2.28)的主要内容,如果未能解决你的问题,请参考以下文章