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

news/2023/6/7 0:11:46

⾼级语⾔:

是相对于汇编语⾔⽽⾔的,是⾼度封装了的编程语⾔,与低级语⾔相对。它是以⼈类的⽇常语⾔为基础的⼀种编程语⾔,使⽤⼀般⼈易于接受的⽂字来表⽰(例如汉字、不规则英⽂或其他外语),从⽽使程序编写员编写更容易,亦有较⾼的可读性,以⽅便对电脑认知较浅的⼈亦可以⼤概明⽩其内容。
⾼级语⾔基本脱离了机器的硬件系统,⽤⼈们更易理解的⽅式编写程序。编写的程序称之为源程序。主要有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 0189 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.exyb.cn/news/show-4553976.html

如若内容造成侵权/违法违规/事实不符,请联系郑州代理记账网进行投诉反馈,一经查实,立即删除!

相关文章

微信又悄悄更新了,快看看你的微信表情发生了哪些变化

微信又悄悄更新了!你发现了吗?快跟小编一起来了解下这次都有哪些新功能呢? 查看一下自己手机微信,是不是发现“生病”这个表情,已经换上了医用口罩? 而除了“生病”这个表情有所变化之外,之前…

由浅入深使用validation框架进行参数校验

1 引言 平时在业务开发过程中 controller 层的参数校验有时会存在下面这样的判断 public String add(UserVO userVO) {if(userVO.getAge() null){return "年龄不能为空";}if(userVO.getAge() > 120){return "年龄不能超过120";}if(userVO.getName().is…

微信公众平台开发——图文消息加表情

本篇博客参考与柳峰老师的博客:https://blog.csdn.net/lyq8479/article/details/9393097 1、最近开发微信公众号,用户要求图文消息中要有一个小星星的图标,这让我很费解啊。。但当我看到柳峰老师的博客时,宛如山重水复疑无路&…

微信不同平台登录邮箱不同怎么破

今天注册微信开发平台,输入qq邮箱,提示该邮箱已被占用,之前使用过这个邮箱注册了微信公众平台。 如果你没有这么多邮箱,可以通过qq邮箱设置多个邮箱账号。这样就可以顺利注册了。 「更多精彩内容请关注公众号geekymv&#xff0c…

计算机主机内部配件有哪些,[计算机维护常识]主机内部有哪些附件

什么是电脑配件?今天,编辑器会将有关计算机硬件组成的基本知识推广给许多计算机新手. 许多新手朋友都不知道计算机主机由哪些配件组成. 在Internet上搜索的信息不清楚或格式太长,因此我认为有必要以简洁直观的方式解释计算机附件的组成.不用说…

学生晚上回宿舍时其在实验室的计算机主机,学生晚上回宿舍时,其在实验室的计算机主机应关闭,显示器一般不用关闭。...

学生显示法的本质是什么?()权利仅存在于法律领域中,晚上其他领域中不存在权利。()法学所研究的法是一个动态的概念,回宿不仅指纸面上的法,而且还指现实生活中的法。()舍时实验室哈罗德-多马模型中假设()。其器哈罗德-多马模型自然…

解决计算机主机 缓冲区,为解决计算机主机与打印机间速度不匹配问题,通常设一个打印数据缓冲区。主机将要输出的数据依次写入该缓冲区,而打印机则依次从该缓冲区中取出数据。该缓冲区的逻辑结构应该是( )。..

为解问题2. 两种血浆脂蛋白分类方法是_____________和____________。决计间速机将机则辑结下列字符数组长度为5的是()算机数据数据数据下列数据中属于字符串常量的是( )主机判断两个字符串是否相等,正确的表达方式是( )打印机个要输依次依次以下正确的字符串常量是(…

计算机主机由cpu和内储存器构成,计算机主机由CPU、存储器和硬盘组成。

摘要:小儿心开国家推拿中医展了作近年药管一系为中理局来以列工发展,计算机主机由包括。见字就可以出声,和硬需要感情加入朗读时不。学化学教学中向化学师、盘组学学(化学在中教育技术)教用面育硕的应范生士科教,化学广大中学教师…