计算机其实是一系列逻辑门电路的集合。我萌生了一个想法,而查阅各种资料无果。。
想法如下了:
CPU在设计完成之后都会提供一组“0 1”指令集用以去操作CPU,进而操作整部计算机。
所以语言的最终产物,就是这些“0 1”指令集的集合(稍微注意下 ~ 这里指令集说的是 CPU 指定的“ 0 1 ”组合,而不是杂论无序的 0 1 ),而无论是汇编语言还是高级语言。。
各个CPU即使有展示自己特性的CPU指令集,但是由于提供了一个公共,通用的指令集,所以这就造就了一些高级语言比如C的可移植性,而如果汇编也只使用这些通用的指令集的话,那么汇编也可以移植(一万个网页中,一万个说汇编不可以移植)。
以上想法纯属猜测,,但十分想知其正确与否而不得。。所以还请各位大侠指点一二,感激不尽!!
我还很想知道语言的编译器(解释器)到底是如何把英文字母转化为 0 1 的,因为编译器是运行在计算机上的,所以无论如何,计算机面对的是英文字母。。如果说手动编译的话,我觉得我也可以对照着一张表把 mov 当做 0 1 的一种组合的。但是运行在计算机上的编译器到底是如何做到的呢?
汇编就是不可移植的,因为都是针对底层平台的指令集,而每套指令集都有各自平台的特性,没法通用(抽象度不够高)。但是你说的这种东西(“可移植的汇编”)我觉得应该类似于java 字节码或者.Net IL,它们各自实现了一套平台无关的指令集,你可以看看相关的资料。
第二个问题太大了,应该是与编译原理相关的内容吧。