Linux内核分析——计算机是如何工作的

马悦+原创作品转载请注明出处+《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000

一、计算机是如何工作的

(一)什么是冯诺依曼体系结构

         冯诺依曼体系结构:就是指存储程序计算机。

1、  从硬件角度:

存储程序计算机工作模型:

2、  从程序员角度:

CPU抽象成for循环。

(二)API:程序员与计算机的接口界面。

ABI:程序与CPU的接口界面。

(1)汇编指令。

(2)约定使用怎样的寄存器。

(3)大多数指令可以直接访问内存。(对于X86计算机指令集来讲)

EIP:

(1)自加一

(2)指令长度不同

(3)可以被不同的指令修改(call、ret、jmp)

二、X86汇编基础

(一)通用寄存器:

(二)段寄存器:

CPU在实际取指令时根据cs:eip来准确定位一个指令。

(三)mov指令及几种内存寻址方式

          B、w、l、q分别代表8位、16位、32位、64位。

寄存器模式,以%开头的寄存器标示符。

立即数是以$开头的数值。

直接寻址:直接访问一个指定的内存地址的数据。

间接寻址:将寄存器的值作为一个内存地址来访问内存。

变址寻址:在间接寻址之时改变寄存器的数值。

 (四)push、pop、call、ret

          Eip寄存器不能被直接修改,只能通过特殊指令间接修改。

三、汇编一个简单的C程序分析其汇编指令执行过程

实验内容:

代码:

int g(int x)

{

  return x + 3;

}

int f(int x)

{

  return g(x);

}

int main(void)

{

  return f(8) + 1;

}

截图:

分析:

学习体会:

  本次课程的学习内容是计算机是如何工作的。计算机的基本原理是存储程序和程序控制。预先要把指挥计算机如何进行操作的指令序列(称为程序)和原始数据通过输入设备输送到计算机内存贮器中。每一条指令中明确规定了计算机从哪个地址取数,进行什么操作,然后送到什么地址去等步骤。计算机在运行时,先从内存中取出第一条指令,通过控制器的译码,按指令的要求,从存储器中取出数据进行指定的运算和逻辑操作等加工,然后再按地址把结果送到内存中去。接下来,再取出第二条指令,在控制器的指挥下完成规定操作。依此进行下去。直至遇到停止指令。

  程序与数据一样存贮,按程序编排的顺序,一步一步地取出指令,自动地完成指令规定的操作是计算机最基本的工作原理。这一原理最初是由美籍匈牙利数学家冯.诺依曼于1945年提出来的,故称为冯.诺依曼原理。

原文地址:https://www.cnblogs.com/20135235my/p/5219970.html