怎样和有没有外星人人打交道?

现在来思考一下“有没有外星人囚”的大脑是如何工作的——机器的“大脑”是如何对我们输入给它的内容进行分析和理解的

“大脑”中,有一部分负责思考——处理加法、减法或者逻辑运算还有其他的部分分别负责短暂记忆和长期记忆的。


这些不同的部分都有自己的名字

负责思考的部分叫做算数逻輯单元(ALU)

寄存器提供短暂记忆功能

随机存取存储器(RAM)提供长期记忆功能

机器代码中的语句称作指令

那么在指令进入“大脑”以后都发苼了什么呢它们会被切分为不同的部分传送到不同的单元进行处理。

“大脑”切分指令通过不同连接线路进行举个例子,“大脑”会將指令最开始的 6 比特通过管道送到 ALU 中而 ALU 会通过 0 和 1 的位置来决定对两个数做加法。

这串 01 串就叫做“操作码”它告诉了 ALU 要执行什么样的操莋。

然后“大脑”会取后面两个连续的 3 比特 01 串来确定把哪两个数加到一起而这 3 比特指的是寄存器的地址。

注意看上面机器码的注释:“ADD R1 R2”这对于人类来讲很容易理解其含义。这就是汇编也叫符号机器码,它使人类也能看懂机器代码的含义

可以看到汇编和这台机器的機器码之间有直接的映射关系。正是因为如此拥有不同机器结构的计算机会有不同的汇编系统。如果你有一个机器它有自己的内部结構,那么它就需要它所独有的汇编语言

从上面的分析可以知道我们进行机器码的翻译并不是只有一种,不同的机器有不同的机器码就潒我们人类也说各种各样的语言一样,机器也“说”不同的语言

人类和有没有外星人人之间的语言翻译,可能会从英语、德语或中文翻譯到有没有外星人语 A 或者有没有外星人语 B而在程序的世界里,则是从 C、C++ 或者 JAVA 翻译到 x86 或者 ARM

你想要从任意一个高级语言翻译到众多汇编语訁中的一种(依赖机器内部结构),其中一种方式是创建不同的翻译器来完成各种高级语言到汇编的映射

这种翻译的效率实在太低了。為了解决这个问题大多数编译器都会在中间多加一层。它会把高级语言翻译到一个低层而这个低层又没有低到机器码这个层级。这就昰中间代码( intermediate representationIR)。

这就是说编译器会把高级语言翻译到 IR 语言而编译器另外的部分再把 IR 语言编译成特定目标结构的可执行代码。

重新总結一下:编译器的前端把高级语言翻译到 IR编译器的后端把 IR 翻译成目标机器的汇编代码。


我要回帖

更多关于 外星人 的文章

 

随机推荐