计算机是如何工作的? ----李泽源

李泽源

《Linux内核分析》MOOC课程 http://mooc.study.163.com/course/USTC-1000029000#/info

知识准备

冯诺依曼体系结构

核心思想

1.冯诺依曼是:数字计算机的数制采用二进制;计算机应该按照程序顺序执行。

2.采用二进制作为计算机数值计算的基础,以0、1代表数值。不采用人类常用的十进制计数方法,二进制使得计算机容易实现数值的计算。

3.程序或指令的顺序执行,即预先编好程序,然后交给计算机按照程序中预先定义好的顺序进行数值计算。

汇编语言的五种寻址模式

·        寄存器寻址 registermode: %寄存器  例如:%edx 访问寄存器edx

·        立即寻址 immediate: $数字   例如:$0x123 数值0x123

·        直接寻址 direct:数字   例如:0x123访问地址0x123指向的内存

·        间接寻址 indirect: (%寄存器) (%ebx) 例如:访问寄存器ebx中的地址指向的内存

·        变址寻址 displaced:偏移量(%寄存器) 4(%ebx):访问寄存器ebx中的地址再加4指向的内存;

几个重要的汇编指令


Example instruction


What it does


Pushl %eax


Subl $4, %esp   //栈顶指针减4,栈在向下生长一个位置

Movl %eax, (%esp) //将eax中的值放入栈顶指针指向的内存位置


Popl %eax


Movl (%esp), %eax //从栈顶指针指向的内存中的值放入eax中

Addl $4, %esp //栈顶指针加4,栈在向上收缩


Call 0x12345


Pushl %eip //ip压栈

Movl $0x12345, %eip //将0x12345放入eip中


Ret


Popl %eip //ip出栈

命令行截图:

生成的汇编代码截图:

图解代码:

计算机是如何工作的?

用户将编制好的程序通过输入设备送入计算机, 放在存贮器里保存起来,通过输 入设备向计算机发出执行程序的命令。 于是,在控制器的控制下,计算机便按照程序要求自动地进行工作。 计算机工作时,控制器从存贮器取出一条指令程序, 分析这条指令要求计算机进行哪一种操作,然后执行所规定的操作, 执行完一条指令后,再从存贮器中取出下一条指令,再分析和执行…… 这样重复进行,直到程序执行完毕。

时间: 2024-12-22 19:18:34

计算机是如何工作的? ----李泽源的相关文章

Java实验二实验报告 20135108 李泽源

北京电子科技学院(BESTI) 实     验    报     告 课程:Java 班级: 1351    姓名:李泽源   学号:20135108 成绩:              指导教师:娄嘉鹏   实验日期:2015.5.8 实验密级:          预习程度:          实验时间:15:30~18:00 仪器组次:27         必修/选修:选修     实验序号:02 实验名称: Java面向对象程序设计 实验目的与要求:    1. 初步掌握单元测试和TDD 2

实验三:跟踪分析Linux内核的启动过程 ----- 20135108 李泽源

实验要求: 使用gdb跟踪调试内核从start_kernel到init进程启动 详细分析从start_kernel到init进程启动的过程并结合实验截图撰写一篇署名博客,并在博客文章中注明“真实姓名(与最后申请证书的姓名务必一致) + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ”,博客内容的具体要求如下: 题目自拟,内容围绕Linux内核的启动过程,即从start_kernel

Cgroup maintainer李泽帆:解剖Linux内核容器技术

摘要:Cgroup和namespace等内核特性如何出现,在社区处于怎样的开发状况?Docker如火如荼,内核社区是否会因此加紧完善容器技术的隔离性安全性?华为Linux内核高级工程师李泽帆将在2015 Container技术峰会上详细解说. 2015年4月16-18日,由CSDN主办.CSDN专家顾问团支持的OpenCloud 2015大会将在北京国家会议中心拉开帷幕.为期三天的大会,以推进行业应用中的云计算核心技术发展为主旨,聚焦技术创新与应用实践,设置了"2015 OpenStack技术大

20135201李辰希《Linux内核分析》第一周 计算机是如何工作的?

计算机是如何工作的 1冯诺依曼体系结构:即具有存储程序的计算机体系结构 目前大多数拥有计算和存储功能的设备(智能手机.平板.计算机等)其核心构造均为冯诺依曼体系结构 从硬件来看:CPU与内存通过主线连接,CPU上的IP(可能是16.32.64位)总指向内存的某一块区域:IP指向的CS(代码段)也在内存中:CPU总是执行IP指向的指令. 从软件来看:API(应用程序编程接口,与编程人员)与ABI(程序与CPU的借口界面) 是两个比较重要的软件接口 2. x86(32位)的寄存器中,低16位作为16

用汇编来解释“计算机是怎么工作的”

本文章为<Linux内核分析>实验报告 梁永锐 原创作品转载请注明出处 http://www.cnblogs.com/liangyongrui/p/6392035.html <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 " ----- 以下为要分析的c代码 int g(int x) { return x + 36; } int f(int x) { return g(x) * 4; }

作业1:计算机是如何工作的?20135115臧文君

计算机是如何工作的? 注:作者:臧文君,原创作品转载请注明出处,<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.存储程序计算机工作模型 1.冯诺依曼体系结构:指存储程序计算机 (1)硬件的角度:分为CPU+内存+总线 CPU中的一个寄存器---IP:Instruction Pointer,指向内存的CS:Code Segment 16位的CPU上叫IP,32位叫EIP,64位叫IIP CPU通过IP从内存中

计算机是如何工作的blog1

计算机是如何工作的 存储程序计算机工作模型 冯诺依曼体系结构 从硬件角度来看:CPU和内存,由总线连接,CPU中有一个名为IP的寄存器,总是指向内存的某一块:CS,代码段,执行命令时就取IP指向的一条指令,然后IP自加1,就指向下一条指令. 从程序员角度来看:即存储程序计算机,内存存储数据和指令,CPU就是一个for循环,总是在执行下一条指令,CPU负责解释和执行这些指令. CPU如何识别这些指令? 定义API:程序员与计算机的接口界面 ABI:程序与CPU的接口界面,二进制指令编码,只涉及汇编

通过反汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的

实验一:通过反汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的 学号:20135114 姓名:王朝宪 注: 原创作品转载请注明出处   <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 1 1)实验部分(以下命令为实验楼64位Linux虚拟机环境下适用,32位Linux环境可能会稍有不同) 使用 gcc –S –o main.s main.c -m32 命令编译成汇编代码,如下代码中的数字请自行修改以防与

计算机是如何工作的———高级语言转变为机器语言的过程(20135304 刘世鹏)

计算机是如何工作的———高级语言转变为机器语言的过程 作者:20135304 刘世鹏 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ” 实验过程 写入c语言代码 执行gcc -S -o main.s main.c -m32指令后得到汇编代码 删除以“.”开头的附加项后得到纯净的汇编代码 分析过程 得到纯净的汇编代码之后对其工作过程进行分析 前几步较为简单,ebp和esp所指向数值的箭头颜色与右边代码外框的颜色