高级语言(C语言)、汇编语言、机器语言区别?编译器如何将高级语言编译成机器语言?

news2024/9/24 21:26:25

⾼级语⾔:

是相对于汇编语⾔⽽⾔的,是⾼度封装了的编程语⾔,与低级语⾔相对。它是以⼈类的⽇常语⾔为基础的⼀种编程语⾔,使⽤⼀般⼈易于接受的⽂字来表⽰(例如汉字、不规则英⽂或其他外语),从⽽使程序编写员编写更容易,亦有较⾼的可读性,以⽅便对电脑认知较浅的⼈亦可以⼤概明⽩其内容。
⾼级语⾔基本脱离了机器的硬件系统,⽤⼈们更易理解的⽅式编写程序。编写的程序称之为源程序。主要有C,C++,Python,perl 等等。
⾼级语⾔主要分为2类:
解释型:原代码由解释器⼀边解释为可执⾏的机器语⾔,⼀边执⾏,效率⽐较低,⽽且不能⽣成可独⽴执⾏的可执⾏⽂件,应⽤程序不能脱离其解释器,但这种⽅式⽐较灵活,可以动态地调整、修改应⽤程序。如python。
**编译类:**编译是指在应⽤源程序执⾏之前,就将程序源代码“翻译”成⽬标代码(机器语⾔),因此其⽬标程序可以脱离其语⾔环境独⽴执⾏,使⽤⽐较⽅便、效率较⾼。但应⽤程序⼀旦需要修改,必须先修改源代码,再重新编译⽣成新的⽬标⽂件(* .OBJ)才能执⾏,只有⽬标⽂件⽽没有源代码,修改很不⽅便。现在⼤多数的编程语⾔都是编译型的,例如C/C++。

汇编语⾔(assembly language)

是⼀种⽤于电⼦计算机、微处理器、微控制器或其他可编程器件的低级语⾔,亦称为符号语⾔。在汇编语⾔中,⽤助记符(Mnemonics)代替机器指令的操作码,⽤地址符号(Symbol)或标号(Label)代替指令或操作数的地址。在不同的设备中,汇编语⾔对应着不同的机器语⾔指令集,通过汇编过程转换成机器指令。普遍地说,特定的汇编语⾔和特定的机器语⾔指令集是⼀⼀对应的,不同平台之间不可直接移植。
简单来说,汇编语⾔是机器语⾔(⼆进制指令)的⽂本形式,与指令是⼀⼀对应的关系。汇编语⾔由汇编编译器汇编为机器语⾔(⼆进制指令)交CPU执⾏。

机器语言

机器语言机器能直接识别的程序语言或指令代码,无需经过翻译,每一操作码在计算机内部都有相应的电路来完成它,或指不经翻译即可为机器直接理解和接受的程序语言或指令代码。机器语言使用绝对地址和绝对操作码(操作码和地址解释)。不同的计算机都有各自的机器语言,即指令系统。从使用的角度看,机器语言是最低级的语言

  • 机器语言是直接用二进制代码指令表达的计算机语言,指令是用0和1组成的一串代码,像0101010这种。

汇编语⾔和机器语⾔

汇编语言就是对机器语言的一种转义和描述,具备初步的可读性,但是编写也十分困难和效率低下。汇编语言用符号代替机器语言的二进制码(比如用助记符代替操作码),就把机器语言变成了汇编语言。因此汇编语言亦称为符号语言。
汇编语⾔(符号语⾔)是⾯向CPU的,因此CPU不同,汇编语⾔就不⼀样,有什么CPU架构就有什么汇编语⾔,⽐如x86架构的就是x86汇
编,ARM架构的CPU对应于ARM汇编,MIPS架构的CPU对应于MIPS汇编。
CPU根据总线宽度可以分8位,16位,32位,64位等,所以相应的就有8位汇编,16位汇编,32位汇编等。
汇编语⾔优点
1、因为⽤汇编语⾔设计的程序最终被转换成机器指令,故能够保持机器语⾔的⼀致性,直接、简捷,并能像机器指令⼀样访问、控制计算机的各种硬件设备,如磁盘、存储器、CPU、I/O端⼝等。使⽤汇编语⾔,可以访问所有能够被访问的软、硬件资源。
2、⽬标代码简短,占⽤内存少,执⾏速度快,是⾼效的程序设计语⾔,经常与⾼级语⾔配合使⽤,以改善程序的执⾏速度和效率,弥补⾼级语⾔在硬件控制⽅⾯的不⾜,应⽤⼗分⼴泛。
缺点
1、汇编语⾔是⾯向机器的,处于整个计算机语⾔层次结构的底层,故被视为⼀种低级语⾔,通常是为特定的计算机或系列计算机专门设计的。不同的处理器有不同的汇编语⾔语法和编译器,编译的程序⽆法在不同的处理器上执⾏,缺乏可移植性;
2、难于从汇编语⾔代码上理解程序设计意图,可维护性差,即使是完成简单的⼯作也需要⼤量的汇编语⾔代码,很容易产⽣bug,难于调试;
3、使⽤汇编语⾔必须对某种处理器⾮常了解,⽽且只能针对特定的体系结构和处理器进⾏优化,开发效率很低,周期长且单调。

汇编语⾔与⾼级语⾔

1.汇编语⾔依赖于硬件体系(CPU),且助记符量⼤难记,于是⼈们⼜发明了更加易⽤的所谓⾼级语⾔。在这种语⾔下,其语法和结构更类似普通英⽂,且由于远离对硬件的直接操作,使得⼀般⼈经过学习之后都可以编程。⾼级语⾔通常按其基本类型、代系、实现⽅式、应⽤范围等分类。
2.汇编语⾔与cpu有关,⾼级语⾔与cpu⽆关。
⾼级语⾔有选择,循环,汇编语⾔没有。
⾼级语⾔有符号整数型,⽆符号整数型,浮点型,汇编语⾔不区分,只有16位的字,32位的双字
⾼级语⾔运算时像数学⼀样±*/, 汇编语⾔⽤的是指令,add, sub, multi
汇编语⾔可直接使⽤寄存器,⾼级语⾔不可以
3.编译器的设计,有的编译器直接将⾼级语⾔编译成机器语⾔,有的编译器直接将⾼级语⾔编译成汇编语⾔。
4.高级语言就是经过抽象的编程语言,具备良好的可读性,编写完成后通过编译程序变成成机器语言来执行,或者由解释器来负责解释执行。

同一个语句,三种语言表达形式

对于同一个语句,有以下三种:高级语言、低级语言、机器语言的表示编程

C语言:windows

a=b+1;网络

汇编语言:数据结构

mov -0xc(%ebp),%eax编辑器

add $0x1,%eax学习

mov %eax,-0x8(%ebp)spa

机器语言:操作系统

8b 45 f4翻译

83 c0 01

89 45 f8

编译器

简单讲,编译器就是将“⼀种语⾔(通常为⾼级语⾔)”翻译为“另⼀种语⾔(通常为低级语⾔)”的程序。⼀个现代编译器的主要⼯作流程:源代码 (source code) → 预处理器 (preprocessor) → 编译器 (compiler) → ⽬标代码 (object code) → 链接器 (Linker) → 可执⾏程序(executables)⾼级计算机语⾔便于⼈编写,阅读交流,维护。
机器语⾔是计算机能直接解读、运⾏的。编译器将汇编或⾼级计算机语⾔源程序(Source program)作为输⼊,翻译成⽬标语⾔(Target language)机器代码的等价程序。源代码⼀般为⾼级语⾔ (High-level language),如Pascal、C、C++、Java、汉语编程等或汇编语⾔,⽽⽬标则是机器语⾔的⽬标代码(Object code),有时也称作**机器代码(**Machine code)。

对于C#、VB等⾼级语⾔⽽⾔,此时编译器完成的功能是把源码(SourceCode)编译成通⽤中间语⾔(MSIL/CIL)的字节码(ByteCode)。最后运⾏的时候通过通⽤语⾔运⾏库的转换,编程最终可以被CPU直接计算的机器码(NativeCode)。

咱们都知道,机器是只能作数字计算的,可以让机器去运算的、数字的语言就是机器语言,除此以外的全部计算机语言都是非机器语言。

这样的相对于机器语言的高级语言都须要一个转换,从高级、机器不可理解,转换为机器可理解的机器语言。

这样的一个转换过程就叫作编译(Compile),由编译器(Compiler)来完成。

由C转换为汇编语言这一过程是由汇编器(Assembler)来执行的。

C和汇编语言转换为机器语言都是由编译器来完成的。

编译过程

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/170936.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

(二十四)List系列集合

目录 前言: 一、List集合的特有方法 二、List集合的遍历方式有几种? 三、Arraylist集合底层原理 四、LinkedList的特点 前言: List集合包括JavaList接口以及List接口的所有实现类。List集合中的元素允许重复,各元素的顺序放是对象插入的顺序&#xff…

C生万物 | C语言文件操作指南汇总【内附文件外排序源码】

👑作者主页:Fire_Cloud_1 🏠学习社区:烈火神盾 🔗专栏链接:万物之源——C 文章目录一、为什么使用文件?二、什么是文件?1、程序文件2、数据文件3、文件名三、文件的打开和关闭1、文件…

自动化测试【软件测试】

自动化测试 什么是自动化 有效减少人力的消耗,同时提高生活的质量 通过自动化测试有效减少人力的投入,同时提高了测试的质量和效率 由于回归测试,版本越来越多,版本回归的压力越来越大,仅仅通过人工测试来回归所有版本…

2.3、进程控制

整体框架 1、什么是进程控制? 进程控制的主要功能是对系统中的所有进程实施有效的管理, 它具有创建新进程、撤销已有进程、实现进程状态转换等功能。 简单来说:进程控制就是要实现进程状态转换 2、如何实现进程控制? 2.1、进程…

ATAC-seq分析:TSS 信号(7)

ATACseq ATACseq - 使用转座酶并提供一种同时从单个样本的转录因子结合位点和核小体位置提取信号的方法。 1. 数据类型 上面这意味着我们的数据中可能包含多种信号类型。 我们将从无核小体区域和转录因子(我们的较短片段)周围获得信号。我们的一部分信号…

2-Spring核心与设计思想

目录 1.Spring是什么? 2.容器是什么? 3.IoC是什么? 3.1.传统程序开发 3.2.控制反转式程序开发 3.3.对比总结规律 4.理解Spring IoC 4.1.将对象(Bean)存入到容器(Spring); 4.2.从容器中取出对象。 5.DI概念说明 1.Spring…

计算机编程背景

💖 欢迎来阅读子豪的博客(JavaEE篇 🤴) 👉 有宝贵的意见或建议可以在留言区留言 💻 欢迎 素质三连 点赞 关注 收藏 🧑‍🚀码云仓库:补集王子的代码仓库 不要偷走我小火…

classpath类路径是什么

Spring Boot 一、简介 classpath类路径在 Spring Boot 中既指程序在打包前的/java/目录加上/resource目录,也指程序在打包后生成的/classes/目录。两者实际上指的是同一个目录,里面包含的文件内容一模一样。 二、获取classpath路径 以下两种方式均可…

Icarus Verilog

Icarus Verilog 是一个Verilog仿真工具,以编译器的形式工作,将以verilog编写的源代码编译为某种目标格式。如果要进行仿真的话,可以生成一个vvp的中间格式,由其所附带的vvp命令执行。 https://github.com/steveicarus/iverilog …

面试官:请设计一个能支撑百万连接的系统架构!

目录 1、到底什么是连接?2、为什么每次发送请求都要建立连接?3、长连接模式下需要耗费大量资源4、Kafka遇到的问题:应对大量客户端连接5、Kafka的架构实践:Reactor多路复用6、优化后的架构是如何支撑大量连接的 这篇文章&#x…

SQL Server 全文索引的应用

在公司项目中提出了一个需求: 搜索包含指定关键词的数据。得到这需求后,站在技术角度考虑第一时间就联想到使用SQL里面“like”查询语句。进一步分析需求后,发现“Like”查询满足不到实际的要求。 示例: ---------------------…

【Ajax】接口与接口测试工具PostMan

一、接口接口的概念使用 Ajax 请求数据时,被请求的 URL 地址,就叫做数据接口(简称接口)。同时,每个接口必须有请求方式。例如:http://www.liulongbin.top:3006/api/getbooks 获取图书列表的接口(GET请求)ht…

【4 - 降维算法PCA和SVD - 案例部分】菜菜sklearn机器学习

课程地址:《菜菜的机器学习sklearn课堂》_哔哩哔哩_bilibili 第一期:sklearn入门 & 决策树在sklearn中的实现第二期:随机森林在sklearn中的实现第三期:sklearn中的数据预处理和特征工程第四期:sklearn中的降维算法…

为何香港的IB状元特别多?

今年IB预科课程(The International Baccalaureate Diploma Programme,IBDP)公开考试放榜,香港的学校又是大丰收的一年!因为香港今年一共有九十三名IB状元,即IB的总分为四十五分满分,而他们全部取…

Linux 环境部署 Nexus 服务

一 私服是什么? 一个特殊的远程仓库,它是架设在局域网内的仓库服务,供局域网内的开发人员使用。 当Maven需要下载构建的使用, 它先从私服请求,如果私服上没有的话,则从外部的远程仓库下载,然后…

算力服务亟待破局,超聚变向新而行

“超聚变已独立活下来。”超聚变产品线总裁范瑞琦在2023新品发布会上透露。自从一年多前从华为体系独立,超聚变公司的未来就颇受业界关注。一方面,算力产业蒸蒸日上,各方尤为关注超聚变的产业定位以及发展算力产业的着力点;另一方…

mysql存储过程的流程控制

本文来说下mysql存储过程的流程控制语句 文章目录流程控制概述IF语句CASE语句LOOP语句LEAVE语句ITERATE语句REPEAT语句WHILE语句本文小结流程控制概述 存储过程中可以使用流程控制来控制语句的执行。 MySQL中可以使用IF语句、CASE语句、LOOP语句、LEAVE语句、ITERATE语句、REPE…

Cesium设置模型朝向速度矢量方向

Cesium设置模型朝向速度矢量方向 文章目录Cesium设置模型朝向速度矢量方向1. 需求场景2. 技术路线2.1 VelocityOrientationProperty2.2 VelocityVectorProperty3. 参考链接1. 需求场景 现有一段飞机起飞、爬升的轨迹数据,需要在Cesium中模拟出飞行过程动画&#xf…

Lesson 3. 线性回归的手动实现(3.3 线性回归手动实现与模型局限 3.4 机器学习模型结果可信度理论与交叉验证基础)

文章目录一、线性回归手动实现与模型局限1. 线性回归的手动实现2. 线性回归模型局限3. 线性回归的决定系数二、机器学习模型结果可信度理论与交叉验证基础1. 机器学习模型结果可信度理论基础与数据集划分1.1 机器学习模型结果可信度基础理论1.2 数据集切分方法1.3 线性回归手动…

图的关键路径(AOE网络)

文章目录AOE网概念性质研究的问题关键路径概念求解的方法注意事项AOE网 概念 用顶点表示事件, 边弧表示活动, 边弧上的权值表示活动持续的时间, 这样的带权有向无环图叫AOE网. AOE网常用于估算工程完成时间. AOE网和AOV网都是有向无环图, 不同之处在于它们的边和顶点所代表的…