机器语言,汇编语言,高级语言,c,java语言编译到运行过程

简介: 机器语言,汇编语言,高级语言,c,java语言编译到运行过程

机器语言:    计算机的硬件作为一种电路元件,它的输出和输入只能是有电或者没电,也就是所说的高电平和低电平,所以计算机传递的数据是由“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向编译器提供相同的编程接口,所以可解释编译器生成的字节码文件,将其解释成特定平台的机器语言文件。

     点击了解具体图解具体参考百度百科

这篇文章具体先总结到这里,后面还会继续补充…

相关文章
|
7天前
|
Java PHP 数据安全/隐私保护
Java——IDEA如何运行单个文件
Java——IDEA如何运行单个文件
16 1
Java——IDEA如何运行单个文件
|
7天前
|
Java Android开发
解决Android编译报错:Unable to make field private final java.lang.String java.io.File.path accessible
解决Android编译报错:Unable to make field private final java.lang.String java.io.File.path accessible
25 1
|
22天前
|
算法 Java
Java语言实现最短路径算法(Shortest Path)
Java语言实现最短路径算法(Shortest Path)
34 3
|
24天前
|
关系型数据库 Java 分布式数据库
PolarDB产品使用问题之部署到服务器上的Java应用(以jar包形式运行)无法连接,如何解决
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
5天前
|
Oracle Java 关系型数据库
简单记录在Linux上安装JDK环境的步骤,以及解决运行Java程序时出现Error Could not find or load main class XXX问题
本文记录了在Linux系统上安装JDK环境的步骤,并提供了解决运行Java程序时出现的"Error Could not find or load main class XXX"问题的方案,主要是通过重新配置和刷新JDK环境变量来解决。
16 0
|
26天前
|
Java 测试技术 Maven
Java编译器注解运行和自动生成代码问题之在编译时需要设置-proc:none参数问题如何解决
Java编译器注解运行和自动生成代码问题之在编译时需要设置-proc:none参数问题如何解决
|
6天前
|
Java Linux Nacos
Java -jar 运行 报 MalformedInputException: Input length = 1
Java -jar 运行 报 MalformedInputException: Input length = 1
6 0
|
21天前
|
运维 监控 Java
函数计算产品使用问题之Java 17作为运行时环境,并已使用WebIDE完成代码的修改和调试,如何部署代码
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
26天前
|
Java 编译器
Java编译器注解运行和自动生成代码问题之如何定义@BuildProperty注解
Java编译器注解运行和自动生成代码问题之如何定义@BuildProperty注解
|
3月前
|
存储 Unix 编译器
汇编语言----X86汇编指令
汇编语言----X86汇编指令
69 1