Computer Language

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Computer Language相关的知识,希望对你有一定的参考价值。

汇编语言

计算机是人类创造出来的一种高级工具,有着简单的智能,但是还并不能向人与人一样直接交流;而人们通常控制计算机的程序也都是高级语言编写,计算机不能直接识别高级语言,必须通过编译器转成二进制代码才能识别运行。
计算机真正能够理解的都是低级语言,来控制硬件设备。而汇编语言就是低级语言,直接描述控制CPU的运行。
因此,在了解计算机语言之前,先弄明白汇编语言是怎么回事;一定会事半功倍!
1: What is assembly language?
在计算机里最核心的就是CPU,CPU虽然负责计算,却本身不具备智能。你给它一个指令它就运行一次,运行完就等待下一个指令。而这些指令都是二进制的,我们都称之为操作码 (opcode);如: 00000000
00000001
00000010
这三行数字就是二进制的指令分别代表为数字:0,1,2
对于人类来说,这样的代码程序是不能识别的,也就不知道机器到底在干啥了。而计算机可以通过编译器把人类能识别的高级语言编写的程序,翻译成二进制指令解读给自己。因此,人们为了解决对二进制程序的识别问题,以及简单的编辑需求,就诞生了汇编语言 。
(汇编语言是二进制指令的文本形式,与指令是对应的关系。只要还原成二进制,汇编语言就可以被CPU直接执行,所以汇编语言就是最基础的低级语言。)
2:The origin of assembly language
在早期,编写程序就是手工写二进制指令,然后通过各种开关输入计算机,比如要做加法了,就按一下加法开关。后来,发明了纸带打孔机,通过在纸带上打孔,将二进制指令自动输入计算机。
而为了解决对二进制指令的解读识别问题, 工程师将那些指令写成了八进制。二进制转成八进制是简单的很,但是八进制与二进制都差不多,可读性并没有提高。到最后,还是用文字表达。内存地址也不再直接引用,而是 用标签表示。
如此,就变得复杂了点。多了一个步骤,要把这些指令翻译成二进制,就称之为assembling,完成这个步骤的程序就叫做assembler。它处理的文本,就叫做assembly code。标准化以后,称之为assembly language,缩写为asm,中文就叫汇编语言。
(每一种CPU的机器指令都是不一样的,因此对应的汇编语言也是不一样的,而接下来要说的是目前最流行的X86 汇编语言,也就是因特尔的CPU。)
3:Register and memory model.
寄存器和内存模型是认识汇编语言必须了解的两大知识点。

首先说说寄存器。
说到寄存器就得先说一下CPU了,计算机的核心硬件CPU是有两大部分组成:运算器和控制器;因此CPU本身只负责运算,不负责存储数据。数据一般都是储存在内存中,CPU要是运作是就去内存里调用数据。而CPU的运算速度要远远高于内存的读写速度的;因此,为了避免内存速度拖累CPU,就在CPU上设置了缓存,分为一级和二级。而缓存也是一种内存,要快过普通内存的读写速度。
但是,随着CPU的进步,缓存还是不够快,另外数据在缓存里面的地址是不固定的,CPU每次读写都要寻址也会拖慢速度。为此,在CPU里就又有了寄存器的出现,用来储存最常用的数据。也就是说,那些最频繁读写的数据(比如循环变量),都会放在寄存器里面,CPU会优先读取寄存器,再由寄存器跟内存交换数据。
(寄存器不依靠地区分区数据,而是依靠名称。每一个寄存器都有自己的名称,我们告诉CPU去具体的哪一个寄存器拿数据,这样的速度是最快的。很多人都称之为CPU的零级缓存。)

以上是关于Computer Language的主要内容,如果未能解决你的问题,请参考以下文章

2. Instructions: Language of the computer (指令:计算机语言)

Android Navigation java.language.IllegalStateException 片段类未设置

将微调器值从片段传递到活动

试编写java代码实现一个计数器类(Computer),其中包括:变量value初始值为0

C# 8 开关表达式

jsp页面元素