第十八篇 -- 在C++中嵌入汇编语言

基于C++宝典的学习

一、什么是汇编语言

汇编语言是一种功能很强的程序设计语言,也是利用了计算机所有硬件特性并能直接控制硬件的语言。在汇编语言中,用助记符(Memoni)代替操作码,用地址符号(Symbol)或标号(Label)代替地址码。这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言。

汇编语言比机器语言易于读写、调试和修改,同时也具有机器语言执行速度快、占用内存空间少等优点。但在编写复杂程序时,相对高级语言来说汇编语言代码量较大,而且汇编语言依赖于具体的机型,不能通用,因此不能直接在不同处理机型之间移植。虽然其移植性不好,但效率非常高,针对计算机特定硬件而编制的汇编语言程序,能准确地发挥计算机硬件的功能和特长,程序精炼而质量高,所以汇编语言至今仍是一种常用而强有力的底层开发语言。

 

二、汇编语言的特点

汇编语言指令使用一些具有相应含义的助忆符来表达的,所以,它要比机器语言容易掌握和运用。但因为要直接使用CPU资源,所以相对高级程序设计语言来说它又显得相对复杂。汇编语言程序归纳起来大概有以下几个主要特点。

 

  1. 与硬件相关:汇编语言指令是指机器指令的一种符号表示,而不同类型的CPU有不同的机器指令系统,也就有不同的汇编语言,所以汇编语言程序与机器有着密切的关系。也就是说,不同型号的CPU之间是无法通用相同汇编代码的,因此导致汇编语言的移植性和通用性降低,这是汇编语言天生的缺陷。

  2. 保持了机器语言的优点,具有直接和简捷的特点:正因为汇编语言有“与机器相关性”的特性,程序员用汇编语言编写程序时,可充分发挥自己的聪明才智,对机器内部的各种资源进行合理的安排,让它们始终处于最佳的使用状态,这样做的最终效果就是程序的执行代码短,执行速度快,所以,汇编语言是高效的程序设计语言。另外汇编语言可有效地访问、控制计算机的各种硬件设备,如磁盘、存储器、CPU、I/O端口等,实现资源利用的最大化。

  3. 编写程序复杂:汇编语言是一种面向机器的语言,其汇编指令与机器指令基本上一一对应,所以,汇编指令也同机器指令一样既有功能单一、具体的特点。要想完成某件工作,就必须安排CPU的每步工作。另外,在编写汇编语言程序时,还要考虑具体机型的限制、汇编指令的细节和限制等。

  4. 经常与高级语言配合使用,应用十分广泛:在某些情况下,比如直接操作CPU执行中断以实现线程调度、保存CPU寄存器以存储/恢复线程状态等,仅仅使用高级语言是完不成的,需要借助于汇编语言,但是仅使用汇编语言的话,大型程序恐怕需要付出比高级语言几倍的工作量,有时候也是没有必要的。因此,可以在高级语言里嵌入汇编语句,让仅仅一部分需要高效率的代码用汇编语言来完成,其余的框架搭建等用高级语言来完成,这样既保证了效率又降低了代码的复杂程度。这种配合使用在大型软件开发里经常遇到,应用十分广泛。

 

三、汇编语言的应用领域

汇编语言是面向机器的低级程序设计语言。它可以直接控制硬件的最下层,如寄存器、标志位、存储单元等,因而能充分发挥机器硬件的性能,具有其他高级语言不可替代的作用。汇编语言是计算机能够提供给用户的最快的、最有效的语言,也是能够利用计算机所有硬件特性并且能够直接控制硬件的唯一语言。也正因为汇编语言具有这些特性,在对于程序的控件和时间要求很高的场合,以及需要直接控制硬件的应用场合,使用汇编语言是必不可少的,它能够完成许多其他高级语言所无法完成的功能。比如Linux操作系统的内核,大多数代码是用C语言完成的,但是在某些关键的与硬件关系密切的部分,仍不可避免地使用了汇编语言。汇编语言试用的应用领域如下。

  1. 要求执行效率高、反应快的领域:在操作系统内核、实时系统、智能仪器仪表的控制程序等领域中最主要的要求是效率高和反应快。汇编语言是直接作用于机器硬件的,它所设计的程序具有较小的时间复杂度和空间复杂度。而高级语言是面向问题来设计的,它所设计的程序运行时间长,并且占用存储空间大,在反应和效率上远远不如汇编语言。

  2.

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值