范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

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

  汇编指令大全(精通汇编的人有多厉害)
  作者 | 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

英布为什么背叛项羽(刘邦为什么不救戚夫人)21天图文打卡挑战提到英布,他和韩信彭越并称为汉初三将,秦末乱世除了西楚霸王项羽之外,军事能力上就要算这三个人最牛了,而这三个人还有一个共同的特征他们都曾经是项羽的部下,但最后都改吕不韦和秦始皇的故事(嬴政为什么要杀吕不韦)吕不韦和秦始皇的故事(嬴政为什么要杀吕不韦)各位还记得大秦赋中吕不韦在各种势力的的妥协之下,被迫离开咸阳的场景吗?在吕不韦即将离别的时候,秦王嬴政命人将自己从出生以来还从未见过自己吕不韦简介(吕不韦传奇一生)吕不韦简介(吕不韦传奇一生)纵观中国上下五千年的历史,商人能在历史上留下名字的屈指可数,而吕不韦弃商从政不得不说其政治头脑可见一斑。吕不韦,姜姓,吕氏,名不韦,卫国濮阳(今河南省安胡亥的母亲是谁?(历史上秦二世胡亥的母亲是谁?)胡亥的母亲是谁?(历史上秦二世胡亥的母亲是谁?)有人猜想说,秦始皇大概是没有立皇后,之所以没有立,是因为后宫太多,看花了眼,定不下来。不过,动动脑筋就可以知道,后宫多少,秦与历代一胡亥怎么死的(秦二世胡亥之死)胡亥怎么死的(秦二世胡亥之死)秦二世胡亥复原像公元前210年秦始皇嬴政出巡天下,中府令赵高与左丞相李斯随行,秦始皇幼子胡亥亦随驾出巡。七月丙寅,秦始皇驾崩于沙丘平台(今河北广宗西北嬴政姓什么(胡亥为什么叫胡亥)秦始皇为什么给秦二世起名叫胡亥?却原来她就是前文书口吞三颗千叶金莲子,诞下了三位佛子的五凤姑。自从那一日蜈蚣精金冠仙大闹瑶池毁坏了千叶金莲,二人一番打斗争夺,最后莲蓬还是被那妖魔抢清朝在哪里(清朝是哪里打过来的)很多人以为沈阳是清王朝的发祥地,其实不然,清朝发祥地另有所属,那就是赫图阿拉古城。赫图阿拉古城,位于辽宁省新宾满族自治县永陵镇。赫图阿拉是满语,汉意为横岗,即平顶小山岗,是辽宁省重秦始皇陵为什么不敢挖(秦始皇还活着的证据曝光)在这个世界上,人终有一死,没有人可以长生不老。但是,有人说1973军方发现秦始皇还活着,也有人说秦始皇在甘肃出现。奇怪了,秦始皇死了那么多年,为何会在1973年的甘肃出现呢?究竟这玉米什么时候传入中国的(邂逅鲜食玉米的前世今生)玉米什么时候传入中国的(邂逅鲜食玉米的前世今生)玉米最早产于墨西哥及中美洲。据考古发现早在1万多年前,墨西哥及中美洲就有了野生玉米。玉米(拉丁学名ZeamaysL。)是禾本科玉蜀黍我的前世今生(查自己的三世姻缘)我的前世今生(查自己的三世姻缘)典型的黄土高原地貌,沟壑错纵,冬季的寒风把贫瘠的山梁撕裂出一道道裂痕,宛如饱经沧桑的老人,在山梁的顶部,一片平坦,宛如刀切,大自然的鬼斧神工,让这片保定有什么好吃的(保定市内好吃好玩的地方)说到吃那必然少不了保定人的身影作为资深吃货的你都吃过大保定的哪些创意餐馆呢?NO。1淀里船宴特色菜雄安大咖炖杂鱼疙瘩汤驴肉酥李家熬杂鱼总督豆腐等NO。2会炊生活餐厅特色菜豆泥配咖喱
美国新闻与世界报道(美国实时报道最新)来源环球时报环球网环球时报环球网记者何珊他的狗更适合当州长,美国女演员贝特米德勒29日发推特回击西弗吉尼亚州州长吉姆贾斯蒂斯此前发表的言论。美国有线电视新闻网(CNN)29日报道称什么子(啥子啥啥的成语)曹操画像公元196年,曹操奉迎汉献帝及朝廷百官到根据地许昌,并牢牢地掌握在自己的手中。不久,取得原汉室大部分臣僚支持,赢得了大批士人的归顺。从此开启了借用皇帝权力谋求霸业的道路。三什么老什么老(什么然什么什么四字成语)第一个字是宝宝刀未老宝马香车宝刀不老宝山空回宝珠市饼宝马雕车第二个字是宝怀宝迷邦抱宝怀珍百宝万货天宝当年所宝惟贤毛宝放龟异宝奇珍第三个字是宝珠光宝气上方宝剑尚方宝剑谢家宝树香车宝马什么头什么尾(提什么吊什么四字成语)苏教版六年级上册第一单元知识要点汇总一会认的字。妆(zhung)(浓妆)(化妆)(梳妆)慷(kng)(慷慨)(慷达)瞭(lio)(瞭望)(瞭哨)隅(y)(墙隅)(城隅)耙(b)(钉什么什么一什么(一什么一什么的四字成语)成语一薰一莸拼音yxnyyu解释薰香草,比喻善类莸臭草,比喻恶物。薰莸混在一起,只闻到臭闻不到香。比喻善常被恶所掩盖。成语故事春秋时,晋献公有好几个妻子第一个妻子,娶自贾国,没有生深的成语有哪些(深什么意什么的成语)行云流水,自然流畅,下笔有神,情真意切,感人肺腑,文如其人,醍醐灌顶,用词准确,语言凝练,泥土芬芳,盈滿鲜气,蕴含哲理,韵律之美,扣人心弦,以物抒情,以小见大,好评如潮,格调高昂,中海油回应或被美政府列入黑名单这两天关于中海油回应或被美政府列入黑名单在网上的热度是非常高的,很多网友们也都是非常关注中海油回应或被美政府列入黑名单这个事情,为此小编也是在网上进行了一番搜索查阅相关的信息,那么48名主播被列入黑名单需要严格整顿监管!!据消息,8月9日,中国演出行业协会网络表演(直播)分会公布第六批主播黑名单。这之中,共有48名主播涉嫌从事违法违规活动,列入主播黑名单行业内禁止其进行注册和直播,封禁期限5年。48武大靖夺冠(武大靖男子500米夺冠)武大靖夺冠(武大靖男子500米夺冠)中国队终于在家门口收获本赛季短道速滑世界杯的首枚单项金牌。在11日进行的短道速滑世界杯上海站比赛中,武大靖在韩国加拿大三位名将的夹击下,夺得男子香港一脱成名的女星(那些一脱成名的艳星你最喜欢谁?)香港一脱成名的女星(那些一脱成名的艳星你最喜欢谁?)如今娱乐圈有很多男神女神让观众追星到痴迷状态,如90年代的刘德华张国荣林志颖周润发周慧敏关之琳古天乐赵薇等家里挂满了海报,到了新御舒丹授权官方网站御舒丹到底多少钱一瓶一粒一板几粒几片几瓶御舒丹唯一官方网站电话说明书御舒丹清宫丸官网效果规格图片热线订购18310880830()QQ20049048(小徐微信1705628907