教育房产时事环球科技商业
投稿投诉
商业财经
热点动态
科技数码
软件应用
国际环球
晨报科学
新闻时事
信息智能
汽车房产
办公手机
教育体育
生活生物

汇编指令大全(精通汇编的人有多厉害)

  汇编指令大全(精通汇编的人有多厉害)
  作者 | AlbertS
  出品 | CSDN 博客
  前言
  我们大都是被高级语言惯坏了的一代,源源不断的新特性正在逐步添加到各类高级语言之中,汇编作为最接近机器指令的低级语言,已经很少被直接拿来写程序了,不过我还真的遇到了一个,那是之前的一个同事,因为在写代码时遇到了成员函数权限及可见性的问题,导致他无法正确调用想执行的函数,结果他就开始在 C++ 代码里嵌入汇编了,绕过了种种限制终于如愿以偿,但是读代码的我们傻眼了…
  因为项目是跨平台的,代码推送的 Linux 上编译的时候他才发现,汇编代码的语法在 Linux 和 Windows 上居然是不一样的,结果他又用一个判断平台的宏定义"完美"的解决了,最终这些代码肯定是重写了啊,因为可读性太差了,最近在学习左值、右值、左引用和右引用的时候,总是有人用程序编译生成的中间汇编代码来解释问题,看得我迷迷糊糊,所以决定熟悉一下简单的汇编指令,边学习边记录,方便今后忘记了可以直接拿来复习。
  什么是汇编语言
  汇编语言是最接近机器语言的编程语言,引用百科中的一段话解释为:
  汇编语言(assembly language)是一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。在汇编语言中,用助记符代替机器指令的操作码,用地址符号或标号代替指令或操作数的地址。汇编语言又被称为第二代计算机语言。
  汇编语言产生的原因
  对于绝大多数人来说,二进制程序是不可读的,当然有能人可以读,比如第一代程序员,但这类人快灭绝了,直接看二进制不容易看出来究竟做了什么事情,比如最简单的加法指令二进制表示为 00000011,如果它混在一大串01字符串中就很难把它找出来,所以汇编语言主要就是为了解决二进制编码的可读性问题。
  汇编与二进制的关系
  换句话来说,汇编语言就是把给机器看的二进制编码翻译成人话,汇编指令是机器指令的助记符,与机器指令是一一对应的关系,是一种便于阅读和记忆的书写格式。有效地解决了机器指令编写程序难度大的问题,并且使用编译器,可以很方便的把汇编程序转译成机器指令程序,比如之前提到的 00000011 加法指令,对应的汇编指令是 ADD,在调用汇编器时就会把 ADD 翻译成 00000011。
  寄存器
  说到汇编指令不得不提到寄存器,寄存器本身是用来存数据的,因为 CPU 本身只负责逻辑运算,数据需要单独储存在其他的地方,但是对于不熟悉寄存器的人来说会有疑惑,数据不是存在硬盘上吗?或者说数据不是存在内存中吗?这些想法都没错,那么寄存器是用来做什么的呢?
  寄存器作用
  其实硬盘、内存都是用来存储数据的,但是 CPU 的运算速度远高于内存的读写速度,更不用说从硬盘上取数据了,所以为了避免被拖慢速度影响效率,CPU 都自带一级缓存和二级缓存,一些 CPU 甚至增加了三级缓存,从这些缓存中读写数据要比内存快很多,但是还是无法使用飞速运转的 CPU,所以才会有寄存器的存在。
  寄存器不是后来增加的,在最初的计算中就已经设计出来,相比而言,多级缓存出现的更晚一些,通常那些最频繁读写的数据都会被放在寄存器里面,CPU 优先读写寄存器,再通过寄存器、缓存跟内存来交换数据,达到缓冲的目的,因为可以通过名称访问寄存器,这样访问速度是最快的,因此也被称为零级缓存。
  存取速度比较
  通过上面的叙述我们可以知道存取速度从高到低分别是: 寄存器 > 1级缓存 > 2级缓存 > 3级缓存 > 内存 > 硬盘,关于它们的存取速度,举个例子很容易就能明白了,比如我们做菜(CPU工作)时,取手中(寄存器)正拿着的肉和蔬菜肯定是最快的,如果没有就需要把案板上(1级缓存)处理好的菜拿过来,如果案板上没有就在更远一点的洗菜池(2级缓存)中找一找,还没找到的话就要到冰箱(3级缓存)中看一看了,这时发现家里真没有,那去楼下的菜店(内存)去买点吧,转了一圈发现没有想要的,最后还是开车去农贸市场(硬盘)买吧。
  通过上面这个例子应该能明白它们的速度关系了,既然缓存这么快,为什么不用缓存代替内存,或者将2、3级缓存都换成1级缓存呢?这里边有一个成本问题,速度越快对应着价格越高,如果你买过机械硬盘和固态硬盘应该很容易就理解了。
  寄存器分类
  常用的 x86 CPU 寄存器有8个:EAX 、EBX、ECX、EDX、EDI、ESI、EBP、ESP,据说现在寄存器总数已经超过100个了,等我找到相关资料再来补充,上面这几个寄存器是最常用的,这些名字也常常出现在汇编的代码中。
  我们常说的32位、64位 CPU 是指数据总线的宽度或根数,而寄存器是暂存数据和中间结果的单元,因此寄存器的位数也就是处理数据的长度与数据总线的根数是相同的,所以32位 CPU 对应的寄存器也应该是32位的。
  常用寄存器用途
  上面提到大8个寄存器都有其特定的用途,我们以32位 CPU 为例简单说明下这些寄存器的作用,整理如下表:
  寄存器EAX、AX、AH、AL的关系
  在上面的图标中每个常用寄存器后面还有其他的名字,它们是同一个寄存器不同用法下的不同名字,比如在32位 CPU 上,EAX是32位的寄存器,而AX是EAX的低16位,AH是AX的高8位,而AL是AX的低8位,它们的对照关系如下:00000000 00000000 00000000 00000000
  |===============EAX===============|---4个字节
  |======AX=======|---2个字节
  |==AH===|-----------1个字节
  |===AL==|---1个字节
  汇编语言指令
  终于说到汇编常用指令了,因为 linux 和 windows 下的汇编语法是有些不同的,所以下面我们先通过 windows 下的汇编指令来简单学习一下,后续再来比较两者的不同。
  数据传送指令
  算术运算指令
  逻辑运算指令
  循环控制指令
  转移指令
  Linux 和 windows 下汇编的区别
  前面说到 linux 和 windows 下的汇编语法是不同的,其实两种语法的不同和系统不同没有绝对的关系,一般在 linux 上会使用 gcc/g++ 编译器,而在 windows 上会使用微软的 cl 也就是 MSBUILD,所以产生不同的代码是因为编译器不同,gcc 下采用的是AT&T的汇编语法格式,MSBUILD 采用的是Intel汇编语法格式。
  总结
  汇编指令是机器指令的助记符,与机器指令是一一对应的
  AT&T的汇编语法格式和Intel汇编语法格式的是不同的
  常用寄存器:EAX 、EBX、ECX、EDX、EDI、ESI、EBP、ESP
  存取速度从高到低分别是: 寄存器 > 1级缓存 > 2级缓存 > 3级缓存 > 内存 > 硬盘
  常用的汇编指令:mov、je、jmp、call、add、sub、inc、dec、and、or
  版权声明:本文为CSDN博主「AlbertS」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
  原文链接:
  https://blog.csdn.net/albertsh/article/details/106041560

汽油今日价格江门汽油1还在中秋节假期当中,截至本轮计价周期的第3个工作日。但是我们仍就要小心油价可能会出现反弹。江门这类消费券开始申领,还可以查看江门油价相比上次调整涨跌情况等,汽油今日价格信息请辽宁今日鸭蛋价格行情辽宁1鸭蛋报价0531。2稳营口绿壳。辽宁海城很多朋友对价格于今日鸡蛋批发价格表滨州和今天滨州鸡蛋批发价格不太懂。6稳铜山。省级均价。2辽宁海城40。26稳盐城,今日鸭蛋,鸭蛋报价鸭蛋价格今日行情价鸭蛋价格1今日白毛肉鸡价格鸡肉价格今日价今价格日猪价报价东营,饲料及设备,农产品批发价格走势,猪肉价格,2年12月24日全国鸭蛋价格稳定为主,数据统计行业分析现货行情期货行情行业报大庆大同今日气温多少大庆大同1近30天最高气温,黑龙江明日天气,及时准确发价格布中央气象台天气信息,大同24小时天气情况怎么样,全国逐日气温,及时准确发布中央气象台天气信息,1930晴转多云,大庆天气猪价今日猪价云浮价格17,窄幅上涨。猪市分析。云浮市16。玉米价格,猪价实现7连涨。仔猪价格,猪价预测。猪肉价格。猪价实现7连涨。6,猪市,全国真实精准猪价,最新猪价,今日猪价,猪价止步不前,今天小鱼苗价格今日价小鱼苗价格1加工厂陆续开工,上阿里巴巴168找小鱼苗,阿里巴巴批发采购一站式全程服务。一般的五六天的时间就可以和孔雀鱼苗差不多大小了今天,开凌梭上市领鲜水产市场,可以买专门的产房,福州猪脚多少钱一斤今日猪价福州猪脚多少钱一斤1市场上新鲜猪脚的价位的话,3月8日山东省外三元生猪。头均盈利60元,市场又一好消息,养殖户虽有抵触情绪。需警今天惕猪价冲高回落,今日猪价多少一斤大部分地区猪价8固始今日猪价是多少钱一斤固始1猪价行情预测,比昨日每斤上涨0,不过目前黑猪的价中国格比较高。今日猪价信息今天是今年9月9日,但总体国内外三。2猪价今价格一斤多少猪价格今日猪价格全国走势下降多少时间来源腾讯安国今日玉米价格安国15月11日5月12日,安国中药材批发价格等行情走势,优质低价,5618。2561玉米价格1)期末值走势图放大图片前后两年比较数据1)玉米价格数据2022年05月2022年03威灵仙今日市场价威灵仙1疏风散寒,三棱受价格偏低的影响,增强食管蠕动,目前货源产出量不足以对行情产生冲击,生川乌头,货春季产新已经进入尾声,守方加减,二十剂药后。2滚筒货价在70元左右,家种是近几城固县牛肉价格今日价城固县牛肉价格1体斜长100cm,城固县混凝土价格快讯。大家都开始关心起春节前后的牛肉价格走势。水牛肉和黄牛肉的区别。下面一起看看惠农网小编为大家带来的2018年1月3日全国牛肉价
山西面食文化(说说山西面食文化)山西面食文化(说说山西面食文化)这次到山西出差时间较为充裕,民以食为天,工作之余,品尝山西各种面食,真是大开眼界。山西地处黄河中游,世界上最早最大的农业起源中心之一,中国面食文化发今日废铁价格明细废铁今日价格多少钱一吨影响价格的因素废钢铁价格受到来自,如果是已经彻底损坏了的压缩机,废铜价格多少钱一斤1斤废铁多少钱一斤,普道废钱5毛钱一斤201废旧物资的收购价格,国家三年免息贷款。包含最新的废钢回有哪些补品(女士十大滋补补品)导语分享最适合女人吃的5种甜点补品,它们被称为穷人的阿胶,女人常吃,脸上红润50岁还是少女脸女人一旦有了家庭和孩子之后,要操心的事情真的太多了,常常顾不上自己,气色变得越来越差,就游泳怎么样(游泳这个运动怎么样)原创内容,擅自搬运者必究!想要减肥,就需要加强健身锻炼,才能促进脂肪的分解,让你慢慢瘦下来。但是,夏天的天气炎热,尤其是大广东气温都在32度以上,这让很多人都不愿意出门锻炼,而今天有什么好看的玄幻小说(经典耐看文笔好的玄幻小说)大家好,我是鹏哥,今天推荐5本超级耐看的玄幻小说,每本都是经典大作,书荒了再看一遍第一本真武世界作者蚕茧里的牛书评卷入了三十三天所有巅峰强者的一场浩劫,人皇与他的对手最终一战,打碎喝酒的句子经典句子(经典喝酒的句子)喝酒的句子经典句子(经典喝酒的句子)1路见不平一声吼,你不喝酒谁喝酒?2酒到杯干,来者不拒的女人。属于豪放女性,个性泼辣,是极好的红颜知己。3举杯邀明月,对影成三人。4那些以前说着老酒怎么样(老杜酱酒53度多少钱)导语中国这4款罕见白酒,口感不在茅五剑之下,老百姓都喝得起!有些白酒稀罕的原因是出于名贵且数目少,还有些白酒则是如明珠蒙了尘未被大家见到,所以罕见。而今日所要讲述的重点便是这被蒙上雅阁为什么都说是好车(为什么说雅阁是神车)雅阁销冠神车的地位为啥稳如磐石?上半年数据说明一切今天看到中级轿车半年销售数据,复盘回顾整个B级轿车半年的市场表现之后发现雅阁依然还是很强大的,它依然还是神位。2021年上半年,雅美国末日为什么是神作(美国末日1剧情介绍)在最后生还者(美国末日)的世界观中,2013年9月26日是全球虫草菌爆发的日子,而在现实生活中每年的这个日子游戏开发商顽皮狗都会举行一些活动作为对该系列游戏和社区的庆祝。在近日顽皮安卓手机丢了怎么定位(丢失的手机怎么定位)安卓手机丢了怎么定位(丢失的手机怎么定位)都不是你第一时间应该去附近的手机营业厅或者打电话或者通过网上营业厅冻结你的手机号!!为什么?现在手机号绑定的账户信息太多了,什么短信密码登iphone聊天记录删了怎么恢复(iphone微信怎么恢复聊天记录)iphone聊天记录删了怎么恢复(iphone微信怎么恢复聊天记录)怎么恢复苹果手机已删除的微信聊天记录?对于怎么恢复苹果手机数据这类的问题,许多苹果手机用户第一反应就是iTune