汇编指令入门级整理 汇编指令
汇编指令(汇编指令的初级精加工)
作者|艾伯特
出品| CSDN博客
序
我们大多数人都被高级语言宠坏了,各种各样的高级语言正在逐渐增加源源不断的新功能 。汇编作为最接近机器指令的低级语言,已经很少被直接用来写程序了 。但是我真的遇到过一个,以前的同事,写代码的时候因为成员函数的权限和可见性的问题,无法正确调用自己想要执行的函数 。于是,他开始在C++代码中嵌入汇编,绕过了各种问题 。
因为项目是跨平台的,所以当代码在Linux上编译时,他发现汇编代码的语法在Linux和Windows之间其实是不一样的 。于是,他用一个宏来判断平台,来定义一个“完美”的解决方案 。最后这些代码肯定是重写了,因为可读性太差了 。最近在学习左值、右值、左引用、右引用的时候,总有人用程序编译生成的中间汇编代码来说明问题,让我觉得很茫然,所以我决定先熟悉一下简单的汇编指令,边学边记,以后可以直接用来复习 。
什么是汇编语言?
汇编语言是最接近机器语言的编程语言,机器语言解释为:
汇编语言是电子计算机、微处理器、微控制器或其他可编程设备的低级语言,也称为符号语言 。在汇编语言中,助记符用来代替机器指令的操作码,地址符号或标号用来代替指令或操作数的地址 。汇编语言也被称为第二代计算机语言 。
汇编语言的原因
对于绝大多数人来说,二进制程序是不可读的 。当然也有有能力的人看得懂,比如第一代程序员 。然而,这种人正在灭绝 。直接看二进制不容易看出做了什么 。比如最简单的加法指令二进制表示为0000011,如果混在一大串01字符串中就很难找出来 。所以汇编语言主要是解决二进制代码的可读性问题 。
汇编和二进制的关系
换句话说,汇编语言就是把机器的二进制代码翻译成人类语言 。汇编指令是机器指令的助记符,与机器指令一一对应,是一种易读易记的书写格式 。有效地解决了机器指令编写困难的问题,编译器可以很容易地将汇编程序翻译成机器指令,比如前面提到的0000011加法指令,对应的汇编指令是ADD,调用汇编程序时会翻译成0000011 。
注册
说到汇编指令,寄存器就不得不提了 。寄存器本身是用来存储数据的,因为CPU本身只负责逻辑运算 。数据需要分开存放在其他地方,但是对于不熟悉寄存器的人来说会有疑问 。数据不是存储在硬盘上吗?还是数据不存在于内存中?这些想法都是正确的,那么寄存器是用来做什么的呢?
寄存器功能
其实硬盘和内存都是用来存储数据的,但是CPU的运算速度远高于内存的读写速度,更不用说从硬盘上取数据了 。所以为了避免被拖慢,影响效率,所有的CPU都有自己的一级缓存和二级缓存 。有些CPU甚至增加了三级缓存 。从这些缓存中读写数据要比内存快很多,但是还是无法使用运行速度快的CPU,所以有寄存器 。
寄存器不是以后添加的,而是在初始计算中就已经设计好的 。相比较而言,多级缓存出现的比较晚 。通常,最频繁读写的数据会放在寄存器中 。CPU优先读写寄存器,然后通过寄存器和缓存与内存交换数据,达到缓冲的目的 。因为寄存器可以通过名字访问,所以访问速度最快,所以也叫零级缓存 。
访问速度比较
从上面的描述我们可以知道,访问速度从高到低是:寄存器>一级缓存>二级缓存>三级缓存>内存>硬盘 。至于它们的访问速度,举个例子就很容易理解了 。比如我们做饭的时候(CPU工作),我们手里拿着的肉和菜(寄存器)一定是最快的 。如果没有,我们需要在案板上处理掉它们(一级缓存) 。如果不在案板上,就去更远的洗碗池(二级缓存)里找 。如果还没找到,就去冰箱里找找(三级缓存) 。这个时候你发现家里真的没有 。然后去楼下的蔬菜店(记忆)买一些 。一轮下来,你发现你什么都不想要 。最后,你最好开车去农贸市场(硬盘)买 。
通过上面的例子,我们应该可以了解它们的速度关系 。既然缓存这么快,为什么不用缓存代替内存,或者把二级和三级缓存都改成一级缓存?这里有一个成本问题 。速度越快,价格越高 。如果你买过机械硬盘和固态硬盘,应该很好理解 。
寄存器分类
有八种常用的x86 CPU寄存器:EAX、EBX、ECX、ed x、EDI、ESI、EBP、ESP 。据说现在注册总数已经超过100个 。找到相关资料我会补充的 。以上寄存器是最常用的,这些名字经常出现在编译后的代码中 。
我们常说的32位和64位CPU是指数据总线的宽度或根数,而寄存器是暂时存储数据和中间结果的单元 。所以寄存器的位数,也就是处理数据的长度和数据总线的根数是一样的,所以32位CPU对应的寄存器也应该是32位的 。
推荐阅读
- 国际象棋基础入门 国际象棋规则
- 八字命理入门基础知识 八字轻松入门
- 学风水怎么入门?别走歪路 风水书籍
- 紫微斗数基础入门知识介绍 紫微斗数入门
- 入门必学的15个摄影知识 单反入门知识
- 新手基金入门视频、买基金新手入门步骤,有以下六点?
- 摄影新手们的摄影入门教学 初学摄影入门
- 学唱歌史上最全基础乐理 乐理基础知识入门
- 只有练到这股内劲才算是真正的入门 内功入门
- 镜像文件格式入门