机器语言: 计算机的硬件作为一种电路元件,它的输出和输入只能是有电或者没电,也就是所说的高电平和低电平,所以计算机传递的数据是由“0” 和“1”组成的二进制数,其实就是控制计算机硬件的高低电平或通路开路,这种语言就是机器语言,机器语言使用绝对地址和绝对操作码
, 例如某台计算机字长为16位,即知有16个二进制数组成一条指令或其它信息。16个0和1可组成各种排列组合,通过线路变成电信号,让计算机执行各种不同的操作
,例如某台计算机字长为16位,即知有16个二进制数组成一条指令或其它信息。16个0和1可组成各种排列组合,通过线路变成电信号,让计算机执行各种不同的操作
如某种计算机的指令为1011011000000000,它表示让计算机进行一次加法操作;而指令 1011010100000000 ,则表示进行一次减法操作。它们的前八位表示操作码,而后八位表示地址码。
从上面两条指令可以看出,它们只是在操作码中从左边第0位算起的第6和第7位不同。这种机型可包含256(=2的8次方)个不同的指令
指令系统是指计算机所能执行的全部指令的集合
指令部分的示例
0000 代表 加载(LOAD)
寄存器部分的示例
0000 代表寄存器 A=
存储器部分的示例
000000000000 代表地址为 0 的存储器
机器语言示例:
0000,0000,000000000000 代表 加载寄存器到存储器中
汇编语言示例:
LOAD A, 1代表 0000,0000,000000000001
汇编语言
汇编语言(assembly language)是一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。在汇编语言中,用助记符代替机器指令的操作码,用地址符号或标号代替指令或操作数的地址;
比如:用“ADD”代表数字逻辑上的加减,“ MOV”代表数据传递等等,举例说明
ADD 8; 累加器ACC+8送进累加器ACC中
PUT C; 把累加器ACC送进C中
用汇编语言等非机器语言书写好的符号程序称为源程序,汇编语言编译器的作用是将源程序翻译成目标程序。目标程序是机器语言程序,当它被安置在内存的预定位置上后,就能被计算机的CPU处理和执行。
通过汇编器变成机器代码,最后被计算机执行。
高级语言
高级语言按程序的执行方式可分为编译型和解释型
编译型(C,C++…)
编译型语言是指使用专门的编译器,下面就按照C语言举例
C语言在编写之后的从源代码到二进制行程序
1.预处理(Preprocessing),
预处理用于将所有的#include头文件以及宏定义替换成其真正的内容
2.编译(Compilation),
将经过预处理之后的程序转换成特定汇编代码(assembly code)的过程
3.汇编(Assemble),
汇编过程将上一步的汇编代码转换成机器码(machine code),这一步产生的文件叫做目标文件,是二进制格式
4.链接(Linking)
链接过程将多个目标文以及所需的库文件(.so等)链接成最终的可执行文件(executable file)
解释型(Python…)
Python、TCL和各种Shell程序一般而言是使用解释器执行的
解释型语言:是指无需编译,直接能够将源代码解释为机器语言进行运行的语言。解释器边解释边执行
java语言的编译到执行过程
Java是一种特殊的高级语言,其既具有编译型语言的特征,又具有解释型语言的特征,因为Java语言要经过先编译、后解释才能被执行
先编译生成*.class文件,不是可执行文件,它必须使用特定平台的解释器来解释执行。
程序员使用Java语言编写的.java源文件,需要使用javac编译器编译成字节码文件,也即*.class文件**注意:该字节码文件与平台无关,可被特定平台的Java解释器执行
Java语言中负责解释字节码文件的是Java虚拟机,即JVM(Java Virtual Machine)。不同平台,各自实现了其JVM,JVM向编译器提供相同的编程接口,所以可解释编译器生成的字节码文件,将其解释成特定平台的机器语言文件。
点击了解具体图解具体参考百度百科
这篇文章具体先总结到这里,后面还会继续补充…