汇编语言属于底层架构吗?有什么作用?

WYF蓬莱


1、首先负责的说,汇编属于底层架构。计算机只能识别0和1两个数字,那我啥我们平时编程都是直接英文字符呢?这中间就是一个转换的问题,那是不是直接将高级语言转换成可执行的二进制(也就是0和1)呢?其实也不是,现在编译器大多数都是将高级语言转成中间的汇编语言。那为啥必须装成汇编语言呢?因为计算机硬件不同,可行性的命令集是不一样的,比如intel与amd,汇编语言就是操作这些cpu的符号语言。所以高级语言需要转换成依赖于硬件的汇编语言。

2、有什么用呢?

(1)优化,因为我们直接使用高级语言,在某些情况下,不能直接发现性能问题,使用汇编可以很好的分析程序真正的执行流程,进而看到问题所在。

(2)破解,发行的软件都是编译好的二进制可执行文件,无法得到源码,但二进制指令与汇编符号是一一对应的,我们可以通过逆向工程,反汇编得到软件的汇编代码,进而观察注册行为,破解软件。

(3)内核启动,在电脑开启之时,操作系统软件还未加载,这时只能使用机器识别的语言进行控制运行。

不过随着互联网发展,版权保护等等,现在使用汇编的人数在减少,但它会一直存在。


ShenZhen之围


简介

汇编语言(assembly language)是一种用于电子计算机、微处理器、微控制器或其它可编程器件的低级语言,亦称为符号语言。属于第二代计算机语言,它是采用一些容易理解和记忆的字母、单词来代替一个特定的机器指令,如:“ADD”代表数字逻辑上的加减。这样一来,通过将字母、单词与机器语言指令进行一一对应,便可提高一定的程序可读性,有助于bug修复等开发操作。


应用场景

汇编语言只是将机器语言做了简单编译,但是并没有改变机器语言本身对不同硬件环境的特定性。因此,汇编语言的推广和移植很难,但也正是其未改变机器语言的特定性,使得它能够完美适配特定型号的计算机,故而运行效率远远高过其它语言。又由于其与机器语言相比,提高了可阅读性和简便性,故其通常被应用在底层架构、硬件操作和高要求的程序优化场景中。


优势

  • 可轻松读取存储器以及硬件I/O接口状态

  • 保持了机器语言优秀的执行效率

  • 可扩展性高等


总结

汇编语言是一种比较贴近机器语言的符号语言,因而具有很高的执行效率,但与机器语言相比,又避免了其阅读性差和bug修复过程困难等缺陷,因此,成为了常用的编程语言之一。

此外,对于计算机技术的学习者而言,汇编语言成为了很好的出发点,这是由汇编语言本身的特性所决定的:其充分接触硬件,可以让操作者充分感知计算机的运行过程和原理,从而能够对计算机硬件和应用程序之间的联系和交互形成一个清晰的认识,这也是最能够锻炼编程者编程思维逻辑的。


如果喜欢,可以关注我,谢谢!


Fortitude


汇编语言(assembly language)是最接近于机器语言的编程语言。如果说机器语言是计算机操作的本质,那么汇编语言就是最最接近本质的语言。汇编语言操作直接面向硬件。汇编语言是一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。在汇编语言中,用助记符代替机器指令的操作码,用地址符号或标号代替指令或操作数的地址。在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令。特定的汇编语言和特定的机器语言指令集是一一对应的,不同平台之间不可直接移植。

所以从平台角度上看,汇编语言属于底层架构。

在早期的硬件平台,处理器速度比较慢、内存比较小,所以早期程序不得不使用汇编语言编写。

而如今使用汇编语言开发可以让你更好的理解高级语言,尤其是高级语言中的C语言。汇编语言对于内存的操作都是基于内存地址的,

而C语言中最令人头疼的指针概念,说白了就是内存的地址。指针的学习和应用中最头疼的就是在指针这个抽象的概念,和实际的内存单元之间建立思维映射,而这些恰恰是我们在汇编语言学习中频繁做的一件平常事。另外,对于C语言中的数据类型、形参实参、函数调用、全局变量、局部变量等概念及操作,我们都可以用汇编语言中的一些操作相关联。把这些抽象的概念和过程通过汇编语言形成一个具体的映像,深度剖析,这样我们才能真正的学会、学好C这类高级语言。


老徐聊IT互联网


很高兴回答这个问题!

汇编语言是最接近硬件的语言,与二进制机器语言一一对应。

汇编语言属于最底层的需要,主要用于计算机.微处理器,微控制器或者其他可编程器件的低级需要,也可以称之为符号语言。

汇编语言没有像其他程序语言一样用于编码,程序设计,也没有被广泛用于程序应用开发中,在今天的实际应用中,它通常被应用于底层,硬件操作和高要求的程序优化的场合。驱动程序,嵌入式操作系统和实时运行程序都需要汇编语言。

整体来说,汇编语言能面向机器并且较好的发挥机器的特性,得到质量较高的程序,占用内存少,执行速度快,是高效的程序设计语言。

希望楼主采纳



J小劲


您好!很高兴回答您的问题!

首先,汇编语言肯定是属于底层架构的!

汇编语言就是将一些难于记忆的0100100转换为便于记忆的格式,让人能够稍微理解点。如 将寄存器bx的内容送到ax中,对应的机器指令是: 100001001110110000(完全不知道是啥玩意,如果真要细究,那么你就得去查看其电路连接了),而变成汇编指令后: mov ax, bx 。哈哈,是不是容易理解多了。所以,我也总结出一个道理,其实所谓的困难与简单,真的只是相对的,没有对比就没有伤害!

  回到前面的问题,汇编语言能干什么? 这个问题有点low了,机器语言都能干成的事,汇编都能干?但是,机器语言这么牛逼吗?难道现在这么多高科技的东西机器语言都能干吗?这是废话,所有语言转到最后,都是机器语言,没有机器语言干不了的事,也可以说,没有汇编干不了的事,只是咱功力不够,哈哈!

  汇编主要有三类指令:1)汇编指令(机器码助记符,与机器指令一一对应,如果可以,其实只要这玩意你就可以操作计算机所有硬件了); 2)伪指令(没有对应机器码,由编译器执行,计算机不执行,也就是说被编译器转换成了一组或更多的机器码去了,现代高级语言编译器都是干这事儿的); 3) 其他符号(如+-*/,和第二个一样,由编译器识别转换)

越是技巧性性的东西,我觉得现代的语言已经够多了,咱也没必要在汇编上去花费太多功夫。

  了解汇编,不是想用来写什么牛逼的功能,而是让自己更清楚的明白自己在做的是什么事情。

  我觉得有必要好好了解!


国际科技资讯


汇编语言属于最低级的语言了,也是最底层的语言,再下去就是二进制机器码(101010)对应模拟电路的高低电平了。

在汇编语言中,用助记符代替机器指令的操作码,用地址符号或标号代替指令或操作数的地址。不同CPU架构一般都有不同的机器语言指令集,相应的汇编语言语法也有一定的差异,基本上都不能通用。比如intel的x86平台和ARM精简指令集,还有一些其他的比如MIPS等等都不一样。

在今天的实际应用中,它通常被应用在底层,硬件操作和高要求的程序优化的场合。驱动程序、嵌入式操作系统和实时运行程序都需要汇编语言。 由于汇编更接近机器语言,能够直接对硬件进行操作,生成的程序与其他的语言相比具有更高的运行速度,占用更小的内存,因此在一些对于时效性要求很高的程序、许多大型程序的核心模块以及工业控制方面大量应用。

其他高级语言,比如C/C++的程序在编译时,都会先生成对应的汇编指令,再最终生成二进制执行程序。


码中寻乐


汇编语言是底层语言,不属于架构。

汇编语言(assembly language)是一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。在汇编语言中,用助记符代替机器指令的操作码,用地址符号或标号代替指令或操作数的地址。在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令。特定的汇编语言和特定的机器语言指令集是一一对应的,不同平台之间不可直接移植。

计算机系统中各个语言又低到高顺序:

二进制-----汇编语言-----高级语言(例如c, c++等)。


golang深耕者


汇编语言是介于高级语言与机器语言间的底层语言,它面向处理器、寄存器操作指令的操作语言。它比二进制的机器语言更具备可读性和维护性,是软件与硬件交互的中间件,属于底层架构的一环,对于单片机程序具有重要意义


秉笔书春秋


相比高级编程语言来说,执行效率高,优化好,编写效率比较低,一般底层驱动采用汇编语言


分享到:


相關文章: