在编程语言越来越高级的情况下,程序员学习汇编有什么意义?

您所在的位置:网站首页 汇编语言的编程软件 在编程语言越来越高级的情况下,程序员学习汇编有什么意义?

在编程语言越来越高级的情况下,程序员学习汇编有什么意义?

2023-04-29 15:36| 来源: 网络整理| 查看: 265

曾经有一位知乎大神这样总结汇编语言与高级语言:

机器指令相当于结绳记事,汇编语言相当于甲骨文,高级语言相当于现代文字。

汇编语言的源代码通过汇编器(Assembler)转换为二进制指令

那是不是说明,只要我们会用“现代文字”,就没有必要去学“甲骨文”了?

不是这样的!

因为我们还需要与机器对话

汇编语言是CPU机器指令的助记符

使用二进制表示的计算机指令,称为机器指令。机器指令是计算机电路可以直接理解和执行的指令。使用机器指令可以编写各种各样的程序,就像用人类语言写文章一样, 因此机器指令也称为机器语言

用机器语言进行编程,效率是非常低的。人脑不习惯于操作二进制,如果想要记住所有指令的二进制编码,一定是非常痛苦的事情。因此,汇编语言诞生了!汇编语言就是为了方便编程而发明的。

汇编语言(Assembly Language)使用一种接近自然语言的文本形式来表示二进制的机器指令。在汇编语言中,表示形式是各种方便记忆的符号,即字母和数字。

在CHN-1计算机中,指令有两种,即二进制 0 代表“关”、1 代表“开”。可以定义下面的汇编指令:“ON”代表“开”,“OFF”代表“关”。这样的语法非常方便人们记忆,因此汇编指令也可称为“助记符”

在实际的计算机中,指令都要有参数,例如所访问的内存地址、所读写的寄存器。在汇编语言中,用地址符号或标号代替内存地址,用寄存器的名称代替寄存器的编号。

我们来看一个典型的“数组复制”程序。这段代码采用龙芯 3A5000 的汇编指令编写。

读者不需要了解每一条汇编指令的功能,只需要了解汇编语言使用的是 CPU 的指令集,可以操作每一个寄存器。而实现相同功能C 语言代码虽然行数少,但是由于采用接近自然语言的抽象语法,因此无法任意操作 CPU 内部的资源。

汇编指令不能直接在 CPU 上运行,必须先通过一种转换程序进行处理,转换成二进制的机器指令。这样的转换程序就是“汇编器”(Assembler)。汇编器是每一种 CPU 必备的软件。

有了汇编语言以后,编写程序的效率得到了大幅度提高。汇编语言把“功能表示”和“硬件机制”分离开来,实现了程序员的第一次解放

为什么现在很少使用汇编语言了?

简单来说,就是因为编程语言越来越强大、好用了。

汇编语言是一种“面向机器”的语言,而不是“面向问题”的语言。使用汇编语言编程时,程序员需要考虑寄存器、内存这些 CPU 本身的基本功能,而且汇编指令的语义往往非常简单,所以当编写复杂的程序时,代码很容易变得非常非常长。

高级语言的发明是程序员的第二次解放。在高级语言中,我们可以使用的数据类型上升为整数、浮点数、指针、数组、结构体这些更抽象的逻辑,能够描述的控制机制也更多,例如各种条件判断、循环等。

高级语言通过编译器(Compiler)进行处理,转换成 CPU 执行的机器指令。

高级语言编译成机器指令

高级语言的编程效率远远超过汇编语言。据统计,对于实现相同的计算问题,高级语言使用的代码量平均只有汇编语言的 1/7

更少的代码意味着更短的编程时间,也意味着更少的bug。

高级语言的另一个好处是“平台无关”。对于不同的指令集,汇编语言是不相同的。面向一种指令集的程序在移植到另外一种指令集时,汇编代码不能通用,几乎要从头重写。如果使用高级语言,代码对所有指令集是通用的,只需要使用新平台的编译器重新编译一遍,就可以生成面向新指令的机器代码。

现在的软件开发,绝大多数已经采用高级语言了。

在世界程序语言排名网站(TIOBE)上, 前20名中主要是各种高级语言,例如Java、C语言、Python等。汇编语言大约排在第 14 位,所占份额为1% ~ 2%。

汇编语言会消亡吗?

先下结论:汇编语言不可能完全消亡,在软件编程领域仍然有一席之地。

汇编语言主要用于以下两种场景。

第一种场景:用于实现高级语言不能实现的功能。

高级语言只定义了面向大多数问题的共性语法,但每一种指令集都会有一些特性是高级语言无法实现的,例如读写 CPU 内部的寄存器、访问外设的端口等。这种情况下必须使用汇编语言。因此,在基本输入输出系统(BIOS)、操作系统内核、驱动程序、嵌入式控制程序中经常出现汇编语言。

第二种场景:对程序的性能要求高,需要优化代码。

高级语言是通过编译器转换成机器指令的,有时候并不能生成最优的指令。如果是人工编写汇编语言,则可以针对 CPU 的特点,发挥最大性能。所以在应用程序中,如果需要执行效率非常高的函数,则可以考虑使用汇编语言进行优化。

因此,计算机专业学生一定要重视汇编语言这个基础素质。

以上内容节选自龙芯中科技术专家靳国杰博士、张戈博士倾情编写的《CPU通识课》一书

《CPU通识课》基于龙芯团队在二十年积累的技术和经验,从与CPU相关的八大板块,生动有趣地讲解了CPU的基础概念、核心原理、生产制造及产业生态,更解读了龙芯CPU的研发历史、核心特色和生态建设经验,深入浅出地进行科普,让读者循序渐进地走入CPU的殿堂。

本书主要有以下特色:

01 精品科普类读物,非专业人士也能读懂

CPU(中央处理器)是计算机中最重要的芯片,其设计和制造水平是一个国家信息技术实力的象征,产业生态的构建需要培养更多掌握CPU技术原理的高端人才。

本书可作为高等院校计算机专业本科生或研究生的通识教材,也可作为从事计算机体系结构或计算机系统设计的工程技术人员的参考书。本书也适合非专业人士阅读,尤其适合国内信息化厂商或想支持中国自主信息产业体系建设的有志人士阅读。

02 双视角解读CPU,从CPU到生态宇宙,面面俱到

CPU 经常被称作“电脑之心”,是当之无愧的计算机中枢,程序的每一条指令都要经过 CPU 的解析和执行。同时,CPU也是计算机中最复杂的芯片。立足中国,纵观历史,我国IT 产业的根本出路在于构建自己的生态体系。

本书站在CPU Inside视角,帮助广大读者厘清CPU的来龙去脉,工作原理,同时又跳出CPU本身,从CPU Outside视角解析信息产业生态建设的密码,以及CPU的时代价值。

作者在本书的章节中还着重回答了如下有代表性的问题

国之重器:CPU 为什么成为信息技术的焦点 ?CPU主频越高,性能就越高吗?摩尔定律会失效吗?什么是CPU的后门和漏洞?CPU厂商为什么要重视生态?

03 专家诚意作序推荐,多位IT领域专家学者诚意推荐

本书由龙芯中科技术专家靳国杰博士、张戈博士倾情编写,凝结着龙芯团队的智慧与心血,自编著以来,得到了信息产业人士的广泛关注,已入选国家出版基金及首期“CCF科普阅读推荐图书”出版后书籍受到了中国工程院院士郑纬民、中科院计算技术研究所研究员王元卓、中科院计算技术研究所副所长包云岗、集微网执行副总编慕容素娟、芯来科技创始人胡振波的诚意推荐

中国计算机学会科学普及工作委员会主任、中科院计算技术研究所研究员王元卓亲自为本书作序,充分认可本书的科普属性,予以高度肯定。同时,众多专家学者对龙芯CPU发展路线,以及独立自主的生态建设方向表示支持,对龙芯中科为自主CPU的推广和实践,芯片人才培养所做的贡献表示敬意!

本书目前已上架销售,欲购买本书,点击下方链接即可购买~



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3