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

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

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

相关文章
|
1月前
|
存储 人工智能 算法
数据结构与算法细节篇之最短路径问题:Dijkstra和Floyd算法详细描述,java语言实现。
这篇文章详细介绍了Dijkstra和Floyd算法,这两种算法分别用于解决单源和多源最短路径问题,并且提供了Java语言的实现代码。
69 3
数据结构与算法细节篇之最短路径问题:Dijkstra和Floyd算法详细描述,java语言实现。
|
12天前
|
SQL 安全 Java
安全问题已经成为软件开发中不可忽视的重要议题。对于使用Java语言开发的应用程序来说,安全性更是至关重要
在当今网络环境下,Java应用的安全性至关重要。本文深入探讨了Java安全编程的最佳实践,包括代码审查、输入验证、输出编码、访问控制和加密技术等,帮助开发者构建安全可靠的应用。通过掌握相关技术和工具,开发者可以有效防范安全威胁,确保应用的安全性。
25 4
|
1月前
|
IDE Java 编译器
Java:如何确定编译和运行时类路径是否一致
类路径(Classpath)是JVM用于查找类文件的路径列表,对编译和运行Java程序至关重要。编译时通过`javac -classpath`指定,运行时通过`java -classpath`指定。IDE如Eclipse和IntelliJ IDEA也提供界面管理类路径。确保编译和运行时类路径一致,特别是外部库和项目内部类的路径设置。
|
1月前
|
Java 程序员 编译器
在Java编程中,保留字(如class、int、for等)是具有特定语法意义的预定义词汇,被语言本身占用,不能用作变量名、方法名或类名。
在Java编程中,保留字(如class、int、for等)是具有特定语法意义的预定义词汇,被语言本身占用,不能用作变量名、方法名或类名。本文通过示例详细解析了保留字的定义、作用及与自定义标识符的区别,帮助开发者避免因误用保留字而导致的编译错误,确保代码的正确性和可读性。
43 3
|
1月前
|
移动开发 Java 大数据
深入探索Java语言的核心优势与现代应用实践
【10月更文挑战第10天】深入探索Java语言的核心优势与现代应用实践
51 4
|
1月前
|
小程序 Oracle Java
JVM知识体系学习一:JVM了解基础、java编译后class文件的类结构详解,class分析工具 javap 和 jclasslib 的使用
这篇文章是关于JVM基础知识的介绍,包括JVM的跨平台和跨语言特性、Class文件格式的详细解析,以及如何使用javap和jclasslib工具来分析Class文件。
41 0
JVM知识体系学习一:JVM了解基础、java编译后class文件的类结构详解,class分析工具 javap 和 jclasslib 的使用
|
11天前
|
安全 Java 测试技术
Java并行流陷阱:为什么指定线程池可能是个坏主意
本文探讨了Java并行流的使用陷阱,尤其是指定线程池的问题。文章分析了并行流的设计思想,指出了指定线程池的弊端,并提供了使用CompletableFuture等替代方案。同时,介绍了Parallel Collector库在处理阻塞任务时的优势和特点。
|
8天前
|
安全 Java 开发者
深入解读JAVA多线程:wait()、notify()、notifyAll()的奥秘
在Java多线程编程中,`wait()`、`notify()`和`notifyAll()`方法是实现线程间通信和同步的关键机制。这些方法定义在`java.lang.Object`类中,每个Java对象都可以作为线程间通信的媒介。本文将详细解析这三个方法的使用方法和最佳实践,帮助开发者更高效地进行多线程编程。 示例代码展示了如何在同步方法中使用这些方法,确保线程安全和高效的通信。
28 9
|
11天前
|
存储 安全 Java
Java多线程编程的艺术:从基础到实践####
本文深入探讨了Java多线程编程的核心概念、应用场景及其实现方式,旨在帮助开发者理解并掌握多线程编程的基本技能。文章首先概述了多线程的重要性和常见挑战,随后详细介绍了Java中创建和管理线程的两种主要方式:继承Thread类与实现Runnable接口。通过实例代码,本文展示了如何正确启动、运行及同步线程,以及如何处理线程间的通信与协作问题。最后,文章总结了多线程编程的最佳实践,为读者在实际项目中应用多线程技术提供了宝贵的参考。 ####