编译原理学习(1)

时间:2023-01-01 19:41:39

8位机与16位机:8位的计算机一次原子操作只能处理8bit的指令或数据,64位的计算机一次可以处理64bit的指令和数据。
早期计算机寄存器是8位的,地址总线也是8位的,地址总线就像现实中电话号码位数,一个8位的地址总线允许访问的内存大小是极其有限的,因此cpu能使用的内存资源就少,就像电话号码的位数越短,能容纳的用户越少。寄存器可以简单理解为计算机用于暂存中间结果的地方,要处理一个32位的数就必须用2次或2个8位的寄存器。如果用16的处理器那么可能只需要一次原子操作就能完成原来8位处理器2次或多次操作才能完成的任务。
因此计算机从8位到16位到32位进步是很明显的,8bit能表示256,16bit能表示65535,32bit的二进制可以表示4294967296这么大的数字,日常应用32bit基本够用了,所以32位到64位进步感觉不会那么明显。
游戏机的128位一般只是表示最大支持128bit的寄存器,其内存寻址宽度和指令集也就是32位或64位,和计算机的32位64位不太一样。

指令包含操作数与操作码:

操作码与操作数:操作码其实就是指令序列号,用来告诉CPU需要执行哪一条指令。
指令系统的每一条指令都有一个操作码,它表示该指令应进行什么性质的操作。不同的指令用操作码这个字段的不同编码来表示,每一种编码代表一种指令。组成操作码字段的位数一般取决于计算机指令系统的规模。

操作数(operand),是计算机指令中的一个组成部分,它规定了指令中进行数字运算的量 。操作数指出指令执行的操作所需要数据的来源。操作数是汇编语言指令的一个字段。例如:Mov AX 5678H 操作数(AX 5678H)。在操作数这个字段中可以放操作数本身,也可以放操作地址,还可以放操作地址的计算方法。
通常一条指令均包含操作符和操作数。例如:在比较指令中操作符指定计算机做比较操作,操作数则指定进行比较的两个数值。
操作数是指令执行的参与者,也就是各种操作的对象.与之有关的是操作码,所谓操作码是说明计算机要执行哪种,如传送,运算,移位,跳转等操作,它是指令中不可缺少的组成部分。

汇编语言:助记符、寄存器、内存

CPU结构:运算器(累加器)、控制器


字符集:常见字符集名称:ASCII字符集、GB2312字符集、BIG5字符集、GB18030字符集、Unicode字符集等。计算机要准确的处理各种字符集文字,需要进行字符编码,以便计算机能够识别和存储各种文字。

计算机中储存的信息都是用二进制数表示的;而我们在屏幕上看到的英文、汉字等字符是二进制数转换之后的结果。通俗的说,按照何种规则将字符存储在计算机中,如'a'用什么表示,称为"编码";反之,将存储在计算机中的二进制数解析显示出来,称为"解码",如同密码学中的加密和解密。在解码过程中,如果使用了错误的解码规则,则导致'a'解析成'b'或者乱码。

字符集(Charset):是一个系统支持的所有抽象字符的集合。字符是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等。

字符编码(Character Encoding):是一套法则,使用该法则能够对自然语言的字符的一个集合(如字母表或音节表),与其他东西的一个集合(如号码或电脉冲)进行配对。即在符号集合与数字系统之间建立对应关系,它是信息处理的一项基本技术。通常人们用符号集合(一般情况下就是文字)来表达信息。而以计算机为基础的信息处理系统则是利用元件(硬件)不同状态的组合来存储和处理信息的。元件不同状态的组合能代表数字系统的数字,因此字符编码就是将符号转换为计算机可以接受的数字系统的数,称为数字代码。

http://www.cnblogs.com/skynet/archive/2011/05/03/2035105.html


指令集:能直接执行的指令的集合。元素操作码、源操作数、目标操作数、下一条指令。

操作数的位置:主存、cache、虚存、CPU寄存器、立即数、IO设备。

有指令集是存储在CPU内部,对CPU运算进行指导和优化的硬程序。拥有这些指令集,CPU就可以更高效地运行。Intel有x86EM64T,MMX,SSE,SSE2SSE3,SSSE3 (Super SSE3),SSE4.1SSE4.2AVX。AMD主要是x86x86-64,3D-Now!指令集。

微处理器的指令集架构(Instruction Set Architecture)常见种类如下:复杂指令集运算(Complex Instruction Set Computing,CISC);精简指令集运算(Reduced Instruction Set Computing,RISC) ;显式并行指令集运算(Explicitly Parallel Instruction Computing,EPIC);超长指令字指令集运算(VLIW)


内存:http://www.cnblogs.com/liuxiaoming/p/3149856.html


GNU:GNU计划,又称革奴计划,是由Richard Stallman在1983年9月27日公开发起的。它的目标是创建一套完全*的操作系统。Richard Stallman最早是在net.unix-wizards新闻组上公布该消息,并附带《GNU宣言》等解释为何发起该计划的文章,其中一个理由就是要“重现当年软件界合作互助的团结精神”。为保证GNU软件可以*地“使用、复制、修改和发布”,所有GNU软件都有一份在禁止其他人添加任何限制的情况下授权所有权利给任何人的协议条款,GNU通用公共许可证(GNU General Public License,GPL)。即“反版权”(或称Copyleft)概念。

GPL:GNU通用公共许可证(GNU General Public License)

修改HOST,*:

SED&AWK:

非常强大的文本操纵工具,sed,awk,grep 这个三个命令 都是操作文本文件的
unix系统有几个非常命令的特点:
1. 对于内核而言,unix文件都是字节序列。io设备也是文件。
2. 至于文件的含义交由应用程序来解释。其中文本文件非常重要,因为unix提供 很多了实用程序(utility),这些程序功能相对独立,
但可以通过管道来实现进程间通信(IPC),这样松散的耦合可以完成复杂的操作。那么进程间的通信的数据格式是怎样的呢? 其实对于
实用程序而言,这个数据格式就是简单的文本文件。此外,还有IO重定向,也是一个不错的创意。至于文本文件中的内容采用什么格式呢?
这个很具体的命令有关,那么操作文本就变得非常重要。grep,sed和awk就是三个操纵文本文件的命令
grep搜索
sed 修改和编辑文本文件中某些行
awk 是访问文本文件,操纵文本文件中某些数据
http://zhidao.baidu.com/link?url=bz28a9GaRIn_3UlhCwiuNljd_aAUTGK_IaqWxvJOcfuBr8gYcFVkZcbMaWYUlutgqupQUj7tzqSb9oeV2jjnMa

sed 可理解为 stream editor 的简称,即文本流编辑器。以行为单位处理文本,可以做插入行、删除行、行内文本替换等操作。
awk 中存在 记录 和 字段 两个关键概念,通常默认一行就是一个记录,一个记录又可以被指定分隔符(默认是空格或tab)分割为多个字段。因此awk更为灵活与强大(并且有很多内置函数和变量可使用)。

Utilities:实用程序 相对与Kernel