机器语言,汇编语言,高级语言,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向编译器提供相同的编程接口,所以可解释编译器生成的字节码文件,将其解释成特定平台的机器语言文件。

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

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

相关文章
|
2月前
|
存储 人工智能 算法
数据结构与算法细节篇之最短路径问题:Dijkstra和Floyd算法详细描述,java语言实现。
这篇文章详细介绍了Dijkstra和Floyd算法,这两种算法分别用于解决单源和多源最短路径问题,并且提供了Java语言的实现代码。
95 3
数据结构与算法细节篇之最短路径问题:Dijkstra和Floyd算法详细描述,java语言实现。
|
1月前
|
监控 Java API
如何使用Java语言快速开发一套智慧工地系统
使用Java开发智慧工地系统,采用Spring Cloud微服务架构和前后端分离设计,结合MySQL、MongoDB数据库及RESTful API,集成人脸识别、视频监控、设备与环境监测等功能模块,运用Spark/Flink处理大数据,ECharts/AntV G2实现数据可视化,确保系统安全与性能,采用敏捷开发模式,提供详尽文档与用户培训,支持云部署与容器化管理,快速构建高效、灵活的智慧工地解决方案。
|
1月前
|
SQL 安全 Java
安全问题已经成为软件开发中不可忽视的重要议题。对于使用Java语言开发的应用程序来说,安全性更是至关重要
在当今网络环境下,Java应用的安全性至关重要。本文深入探讨了Java安全编程的最佳实践,包括代码审查、输入验证、输出编码、访问控制和加密技术等,帮助开发者构建安全可靠的应用。通过掌握相关技术和工具,开发者可以有效防范安全威胁,确保应用的安全性。
54 4
|
2月前
|
IDE Java 编译器
Java:如何确定编译和运行时类路径是否一致
类路径(Classpath)是JVM用于查找类文件的路径列表,对编译和运行Java程序至关重要。编译时通过`javac -classpath`指定,运行时通过`java -classpath`指定。IDE如Eclipse和IntelliJ IDEA也提供界面管理类路径。确保编译和运行时类路径一致,特别是外部库和项目内部类的路径设置。
196 5
|
2月前
|
Java 程序员 编译器
在Java编程中,保留字(如class、int、for等)是具有特定语法意义的预定义词汇,被语言本身占用,不能用作变量名、方法名或类名。
在Java编程中,保留字(如class、int、for等)是具有特定语法意义的预定义词汇,被语言本身占用,不能用作变量名、方法名或类名。本文通过示例详细解析了保留字的定义、作用及与自定义标识符的区别,帮助开发者避免因误用保留字而导致的编译错误,确保代码的正确性和可读性。
63 3
|
2月前
|
移动开发 Java 大数据
深入探索Java语言的核心优势与现代应用实践
【10月更文挑战第10天】深入探索Java语言的核心优势与现代应用实践
98 4
|
Java 编译器 开发者
java中运行时异常与编译时异常?
java中运行时异常与编译时异常?
java202303java学习笔记第三十四天编译时异常和运行时异常2
java202303java学习笔记第三十四天编译时异常和运行时异常2
58 0
java202303java学习笔记第三十四天编译时异常和运行时异常1
java202303java学习笔记第三十四天编译时异常和运行时异常1
55 0