Liunxx兴趣小组笔记

 

==========  指令集和CPU(Instruction set and Central Process Unit) ==========
1. 计算机只认识0和1。0和1的排列组合构成指令。不一样的CPU,会有不一样的指令集架构。指令集架构分为RISC和

CISC架构(RISC,reduced instruction set computer,精简指令集。CISC,complex instruction set computer,复

杂指令集)RISC设计者把主要精力放在那些经常使用的指令上,尽量使它们具有简单高效的特色。对于不常用的功能,常

通过组合指令来完成。CISC指令集的指令系统比较丰富,有专用指令来完成特定的功能。常用的PC是CISC架构,也即X86

。指令架构集是CISC架构。

2. 除了intel/AMD的X86之外,还有很多种CPU。如DEC的Alpha21364、IBM的PowerPC G4、HP的PA-8900,SGI的

R12000A和SUN Microsystem公司的Ultra SPARC。这些CPU多采用RISC架构。

3. 手机之类的掌上只能用品,一般采用ARM技术的处理器,ARM处理器是RISC指令集架构。

4. 除了指令集架构之外,CPU通常架构体系有冯诺依曼体系和哈佛结构。还有其他的机构。还有硬件支持函数式变成的

CPU体系结构和指令集。

5. 龙芯采用什么指令集架构?当然不是X86,人家那个是有专利的。也就是说,龙芯认识的0和1的排列组合是和Intel芯片

认识的排列组合是不一样的。据说龙芯大概是抄MIPS的方案,指令集架构也是RISC的。龙芯上面是不能跑Windows操作

系统的,只能跑Linux和其他开源操作系统。为什么?因为Windows系统源码是不开放的,只有Microsoft公司自己知道,

Microsoft想让Windows操作系统在什么芯片上跑,那种芯片才能跑,而Linux系统的源码是开放的,所以开发龙芯团队可

以把Linux系统移植到自己芯片上去。

 

 

==========  计算机怎么认识程序(Why Computer Can Read My Program) ==========
1. 由于计算机只认识0和1,所以要写一个程序让计算机认识的话,只能用二进制代码代码。所以最早的程序员用0和1编程

。这是真的,据说那个时候最常用的编程工具是纸带和打孔机。

2. 用0和1编程实在让人无法忍受,于是汇编语言出现了。汇编语言允许程序员用一个助记符而不是一连串的0和1代表一个

指令。

 

 

==========  编译器(Compiler) ==========
1. 汇编语言为什么能用助记符代表一连串0和1?这个是因为有汇编编译器。汇编编译器会将那些助记符转换成对应的0和1

的串。也就是说,你可以用“mov eax,0xa”这样的东西去代替一串形如“0011 0101 0101 1100”这样的东西。

2. 汇编编译器本身也就是一个程序。它只是一个特殊的程序,既然是程序,那么这个程序本身是用什么语言写的呢?答案

是,第一个汇编编译器只能用机器语言写。

3. 当你有了第一个汇编编译器,那么第二个汇编编译器用什么来写呢?这个时候就可以用汇编语言了(因为已经有了第一

个汇编编译器了),你可以选择用汇编语言写,也可以选择用机器语言写。如果用汇编语言写,这是一个无穷的过程,你

可以写第N个汇编编译器。这个无穷的过程叫编译器的自举(bootstrap)。

4. 编译原理方面的书籍,龙书,鲸书,虎书。

 

 

========== 移植问题(The Trouble of Transplanting) ==========
1. 如果程序员写了一个在X86指令集架构的CPU上运行的程序,想要放到IBM的PowerPC CPU上运行怎么办?甚至或者想

要放到龙芯上运行怎么办?既然有了不一样的指令集架构和CPU,自然完成同样功能的指令非常可能是完全不一样的(不

一样的CPU有不一样的编程模型和编程范式)

2. 每种CPU都会有使用说明书,不过是非常令人困惑和使用说明书而已。这个使用说明书会提炼常用的指令和接口,以及

寄存器设定给程序员使用。一般把这个说明书的这一部分叫做相应的CPU的编程模型。很显然,不同类型的不一样的CPU

有完全不同的编程模型。Intel的X86芯片的说明书有三卷,其中第三卷是讲CPU的编程模型的。

3. 在只有机器语言和汇编语言的时代,移植等于重写程序。同样的程序,在X86指令集上要这样写,在某些RISC指令集上

要那样写。这意味着程序员为了让同一个程序在不同的CPU上跑就要看不同的令人困惑的CPU使用说明书 。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值