⾼级语⾔:

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

编译过程


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

  1. C语言怎么编译成机器语言的,终于理解了编译是怎么回事!从C语言到机器语言的升华过程!...

    看完这篇文章以后,终于明白了编译到底怎么回事.数据库 1 对于同一个语句,有以下三种:高级语言.低级语言.机器语言的表示编程 C语言:windows a=b+1;网络 汇编语言:数据结构 mov -0 ...

  2. C编译成其他语言,编程达人 所有的编程语言最后会编译成C,再编译成汇编,最后落实到硬件操作上吗?...

    首先上结论: (1)不是所有的编程语言都要先编译成C (2)甚至有编程语言连编译成汇编这一步都跳过了. (3)不是所有的编程语言都需要编译,有的是纯解释型语言 1. 编程语言到硬件执行之间到底发生了什 ...

  3. 翻译程序:将高级语言翻译成机器语言

    翻译程序:是指的将高级语言翻译成机器语言的过程. 预备知识: 计算机的层次结构大致可以分为五层结构:高级语言.汇编语言.操作系统.机器语言.微指令系统. 翻译程序可以分为两种情况:编译程序和解释程序 ...

  4. 什么是编程语言,语言之间的区别

    其实,程序指的就是一系列指令,用来告诉计算机做什么,而编写程序的关键在于,我们需要用计算机可以理解的语言来提供这些指令. 虽然借助 Siri(Apple).Google Now(Android).Co ...

  5. C语言与汇编语言的区别

    源地址:C语言与汇编语言的区别 EDN电子技术设计 EDN电子技术设计 微信号 edn-china 功能介绍 EDN China电子技术设计为电子设计工程师和设计经理人提供前沿深度的电子资讯.设计实例 ...

  6. linux有哪些高级语言编译器,程序语言,操作系统,编译器三者之间有何关系?...

    程序语言,操作系统,编译器三者之间有何关系?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 程序语言,操作系统,编译器三 ...

  7. c与python的区别-Python与C语言有什么区别?

    答题练手.手机排版不佳请谅解~ 更新2:还是关于编译和解释 二者的本质区别是在编译/解释器的总体工作方式上的,编译器是off-line,解释器是on-line.编译器把整个程序读进来,进行一系列变大变 ...

  8. python和c语言有什么关系-Python与C语言有什么区别?

    答题练手.手机排版不佳请谅解~ 更新2:还是关于编译和解释 二者的本质区别是在编译/解释器的总体工作方式上的,编译器是off-line,解释器是on-line.编译器把整个程序读进来,进行一系列变大变 ...

  9. python是c语言写的吗-Python与C语言有什么区别?

    答题练手.手机排版不佳请谅解~ 更新2:还是关于编译和解释 二者的本质区别是在编译/解释器的总体工作方式上的,编译器是off-line,解释器是on-line.编译器把整个程序读进来,进行一系列变大变 ...

最新文章

  1. 一个公众号可以绑定几个小程序_如何实现微信小程序和公众号的绑定
  2. python数据写入CSV
  3. javascript—事件冒泡
  4. 初学Java Web(3)——第一个Servlet
  5. e.printStackTrace()不是打印吗,还能锁死?
  6. js正则贪婪模式_JavaScript正则表达式迷你书之贪婪模式-学习笔记
  7. Function Programming - 柯里化(curry)
  8. 列表视图案例3——显示联系人
  9. Linux基本命令介绍
  10. Android应用基础知识(4)---Android处理运行时变更
  11. Java中的系统类–属性,System.out.println()
  12. 二进制颜色查询对照表
  13. Haar人脸检测:Haar特征 + Adaboost+ 级联分类器及改进
  14. cad如何导出jpg文件?
  15. buuctf misc部分wp
  16. Git之(一)Git是什么
  17. 队列与栈的原理及特点
  18. 凿开数据冰层,透出智能时代的光:华为云与开发者的结伴旅行
  19. 解读机器人视觉类别及应用原理
  20. 天嵌开发版 imx6 移植qt

热门文章

  1. Linux pwm_fan 风扇驱动
  2. 域名解析不生效的原因及排查方法
  3. 2012年重要的软件开发发展
  4. Debian选择并安装软件需要下载很久的解决办法
  5. 精确计算时,不要使用float或double
  6. 最新HAL库SDMMC初始化SD报HardFault
  7. python制作礼物_opencv+python制作硬核七夕礼物
  8. 基于java jsp的宠物狗销售网站系统
  9. 微信支付之微信内H5调起支付
  10. Android 网络请求库Retrofit简单使用