目录
目录
程序在变成二进制数据之前,包括汇编语言都是用名字来区分不同操作符(or函数)和操作数的,在变成二进制数据之后,就是按照地址区分了。汇编语言中的助记符,就是按照名字区分操作数的例子。
- 为什么要有计算机语言这个东西:
提及语言,离不开对计算机系统以及操作系统的讨论,因为毕竟先有了计算机系统,(指令集-机器码-汇编-c)进而有了操作系统,才有了各种高级计算机语言。
语言,只是为了指挥计算机才出现的,cup能理解的语言只有机器码,能理解的机器码的集合,叫做cpu的指令集,指令集的各个家族,对应各种cpu架构,随着操作计算机的需求的增加,使用机器码太不好理解,于是发明了汇编语言,由助记符理解指令,即使如此,还是满足不了需求,于是出现了c语言和编译器,还是满足不了需求,于是对cpu的一些通用功能(如io/文件/进程)进行了封装,形成了操作系统,操作系统提供了使用cpu的一些接口.
进而出现了一些高级语言,开发效率更高,能够提供代码封装,比如结构体啦,对象啦,包啦,这些语言无非就是告诉计算机办事,这些高级语言都离不开编译器,因为只有翻译成二进制机器码,才有可能被计算机执行,高级语言的编写,要么直接调用操作系统的接口,要么自己写一些cpu可以理解的指令。
对计算机体系结构和操作系统的理解:
小白篇:推荐 程序是怎样的跑起来的 计算机是怎样跑起来的 开胃菜:网络是怎样连接的
入门篇推荐-任爱华的 操作系统实用教程、 深入理解计算机系统、 现代操作系统 、计算机组成原理软件与硬件接口
内核的理解:推荐Linux内核源代码情景分析可编辑带目录上下两册 非常解惑
编程篇推荐:UNIX环境高级编程中文版 是所有高级语言编程之母
网络和数据库:也是一个开发人员必备技能:自己可以去搜索学习,数据库方便,关系数据库,菲关系数据库,都很多网上教程,
数据结构和算法:研究怎样速度更快更省内存的方式让计算机干活,即让马儿跑得快,又让马儿少吃草。
- 语言的本质:指挥cpu的指令
指令无非:操作符+操作数
操作符:就那些,cpu很笨的,只能执行一些数学运算和移位运算以及逻辑运算,比较运算等等,这是因为数字电路就这些功能。
操作数:要么放在内存,要么放在寄存器中,操作数需要能区分开,那就用地址区分,操作数的大小要明确,那就用数据类型区分。
- 高级语言的本质:
高级语言比较聪明,虽然编译后最终归为指令(操作符和操作数),那在此之上,为了快速出代码,又发明了,复杂数据类型(更大的数据块),流程控制(分支/循环),函数(对语句和流程的封装),类/结构体(对函数以及数据块的封装),包(对类和函数的封装)。
每一种高级语言基本上就干上面这点事,高级语言的语言,无非就是讲解:
操作符 操作数(基本数据类型) 复杂数据类型 流程控制 函数 类 这些东西的定义和使用规则。
===总起来说,me认为编程就是(指令=操作符+ 操作数) (函数=操作块)(数据类型组成数据块比如结构体)(类=操作块 +操作数据块)===
从某种意义上讲,我认为,函数是一种扩展的宏观的操作符(微观操作符如+-*\)。程序的组成单位-即程序实体-只有操作符和操作数。而执行的单位是语句,语句=操作符+操作数。函数=操作符,数据(如基本类型复合类型结构体等)=操作数。类是(自带操作符-函数,和操作数,的类型,是一种封装)
程序在变成二进制数据之前,包括汇编语言都是用名字来区分不同操作符(or函数)和操作数的,在变成二进制数据之后,就是按照地址区分了。汇编语言中的助记符,就是按照名字区分操作数的例子。
所有的语句都必须在代码块中运行。
我认为语言执行的单位:一个进程里面:要么一个语句一个语句地来,要么一筐一筐地来,一筐就是一个函数,就是一帧。
语言执行的实体 VS 程序实体。想一下~
操作符 操作数 操作流程
函数 :代码模块 数据:基本数据,符合数据结构
类:组合了函数和数据块
类复用,接口,一类 类的描述
main函数一般是函数执行入口,从整体上看,代码是由一个一个的函数构成的,除了定义和说明类的语句(例如变量定义、宏定义、类型定义等)可以放在函数外面,所有具有运算或逻辑处理能力的语句(例如加减乘除、if else、for、函数调用等)都要放在函数内部。可以说程序的全部工作都是由各式各样的函数完成的,所以也把语言称为函数式语言。
- 计算机组成:
cpu+内存+io设备
io设备=端口+总线+设备控制器//这三个硬件去容纳各种io设备,设备与
cpu=寄存器+运算器+控制器
内存=地址
- 操作系统的组成:
进程控制
内存管理
io系统:处理器与设备的通信方式有二,无缓冲和有缓冲,有缓冲叫标准io(1.无缓冲:针对指定的io端口地址进行数据传输,io指令通过总线选择适当的设备,并把二进制位移入出设备寄存器。2.有缓冲:设备控制器可以支持内存映射的io,设备寄存器被映射到处理器的地址空间,cpu执行io请求时,采用标准数据传输指令读写设备寄存器)
文件系统
图1 操作系统的组成
- 程序眼中的计算机:
存储器:字节数组,存储着程序和数据,用虚拟地址引用存储器位置
Stat:程序状态,程序执行的总体状态,异常还是正常执行
PC:正在执行的程序地址
CC:条件码 存储算术和逻辑运算造成影响的有关信息
程序寄存器:每个程序寄存器存储一个字,其中%esp:栈指针