计算机概述
思维:从程序员的角度来看 高级语言(java c) 编写的程序 怎么被翻译成硬件语言 (?是指令吗)硬件怎么执行程序的 (开关机.....)
决定程序性能的好坏功能是什么 怎么改进这些功能让它们用更少的代码实现更强大的功能
思维:从硬件设计师的角度来看 计算机组成原理 ?? 采用什么样的技术可以让计算机发挥出更强的性能
(hardware)and(software)之间互相连接的接口是什么? 指令系统/指令集(ISA)
第一章:计算机概要和技术(computer Abstractions and Technology)
教学目标:掌握基本计算机概念 了解计算机中程序执行过程
阅读章节:《Computer Organization and Design》第一章 一到二节
计算机的类型:(Desktop computers)桌面电脑 为个人用户而设计出的体积较小 用来执行第三方软件
控制成本和功能实现性能目的 更小的功耗做更多的事
决定程序性能的要点
程序中的算法----- 数据结构 算法设计
容器---创建好程序翻译成机器语言或指令的软件---编译
计算机部件执行效率-----计算机原理 操作系统
计算机系统= (hardware)+(software)硬件+软件
硬件:具体的物理硬件 例如鼠标 键盘 显示器 printer....
软件:程序+文档 程序是由若干条指令构成的 +语句 文档是那些编程语言的官方文档之类的
硬件是躯体 软件是脑子 躯体再强大 脑子不给力也不行好比有勇无谋的意思 再举一个例子(一核有难 八方看戏)
系统软件:用户程序硬件接口:主板上的 内存条 电源.... 功能:划分空间 处理输入输入操作.....
编译器:将高级语言翻译成汇编语言
汇编器:将汇编语言翻译成机器识别的二进制程序010000100101
指令集架构(ISA):硬件和软件的交接口 在两者之间 不同层次的人编程工作也不一样
example
程序的执行过程 :例计算整数1200和3400的和
通过输入设备发送出来送到中央处理器 调用加法运算模块经过求解后把结果放在存储器中把答案打印到屏幕上 (输出设备)
高级语言解决问题
#include <stdio.h>
int sum()
{
int a,b,c;
a= 1200;
b= 3400;
c= a + b ;
printf ("%d \n",c);
}
这时候虽然人很好理解意思但是机器不理解 所以这个时候需要汇编语言 用汇编语言翻译成二进制010101机器语言机器才能明白
用汇编语言来解决 MIPS指令集 汇编是符号化语言 计算机硬件只识别010101001
lw R1 a; #lw:取数指令 R寄存器 sw存数指令
lw R2 b;
add R3 R1 R2;
sw c, R3;
汇编语言汇编转成机器语言(本质上还是操控内存地址)
通过键盘敲的程序会被保存为ASCII码值 保存在电脑上但电脑还不能识别
过程:在编译器上先编译生成hello.c程序 再通过编译产生hello.s的汇编语言文件 再通过汇编器翻成二进制文件再通过链接器把object文件变成可执行二进制代码 连接器(link)定位到真正的物理空间A00 B00 再变成可执行文件.exe 最后的结果放在磁盘里 为什么放磁盘不放内存呢 一是影响性能二是 内存掉电后里面的工作全部都会丢失突然停电 写的文档里面内容全部都没了 但是现在有些好软件还可以保留住或者用在线office
高级语言--------》汇编语言----------》机器语言------------》二进制可执行文件.exe