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

X86架构处理器汇编伪指令介绍

  X86 架构处理器汇编伪指令介绍
  伪指令指的是那些以(.)(ASCII码是0x2E) 开头的指令,但是它们只是汇编器的使用的用来进行辅助汇编编程的,而跟处理器本身没有关系的指令。因此呢,当我们学得越来越多,越来越深入到了计算机底层时,难免会接触到计算机汇编语言,比如阅读操作系统引导程序的代码。由于x86的汇编语言是标准的,比较容易查找,但是对于伪指令可能由于汇编器的不同而有差异,本文是Oracle Solaris x86 汇编器使用的伪指令,不同的汇编器使用的伪指令可能不同,这点需要注意,但是由于行业之间的默契,它们仍然具有参考价值。
  .align integer, pad
  .align伪指令用来指示下面的数据以integer个字节进行对齐,integer必须是正整数,并且还的是2的指数运算结果,如2, 4, 8…etc. pad 是用来对因对齐产生的多余空间进行填充的值。可以省略,省略后使用默认值,默认值为text段填充0x90 (nop),对于其它段,填充0。
  .ascii "string"
  .ascii伪指令将一个字符串放入目标模块的当前位置,但是它不会在字符串末尾添加结束符’’,string 必须包含在""之内。该伪指令对bss段无效。
  .bcd integer
  .bcd伪指令在当前段内生成一块10进制(80-bits)数据。该伪指令对bss段无效。
  .bss
  .bss伪指令将当前段设为bss段。
  .bss symbol, integer
  在bss段定义符号symbol 并且将当前bss段的位置计数器值添加integer个字节。在这个指令中.bss伪指令后跟有参数,这种情况下,.bss伪指令不会将当前段更改为bss段。参数integer必须是正整数。
  .byte byte1,byte2,...,byteN
  .byte伪指令生成一组初始化之后的字节到当前段中。该指令对bss段无效。参数byte1 ~ byteN 必须是8-bit数据。
  .2byte expression1, expression2, ..., expression
  对于.2byte伪指令,请参考.value伪指令介绍。
  .4byte expression1, expression2, ..., expression
  对于.4byte伪指令,请参考.long伪指令介绍。
  .8byte expression1, expression2, ..., expression
  对于.8byte伪指令,请参考.quad伪指令介绍。
  .comm name, size, alignment
  .comm伪指令在data段分配size个字节的存储空间。size必须是正整数。分配的存储空间被name标识。注意: name不能预先定义。alignment是可选的,如果指定了alignment,那么name所代表的分配的空间的起始地址将被放置在alignment的整数倍的地址上。
  .data
  .data伪指令将当前段设置为data段。
  .double float
  .double伪指令生成一个双精度的浮点数常量,并将其插入当前段中。该指令对bss段无效。
  .even
  .even伪指令将当前程序计数器(.)对齐到一个偶数边界。
  .ext expression1, expression2, ..., expression
  .ext伪指令在当前段中为expression1~expressionN的每个expression生成一个80387 80-bit 浮点数常量。该指令对bss段无效。
  .file "string"
  .file伪指令创建一个符号表条目,该符号表的名字就是参数string,类型为STT_FILE。string指定了与目标文件关联的源文件名称。
  .float float
  .float 伪指令在当前段中生成一个单精度浮点数常量。该指令对bss段无效。
  .globl symbol1, symbol2, ..., symbol
  .globl 伪指令声明了symbol1 ~ symbolN的符号为全局符号。每一个其中的符号或者在外部定义,或者在输入文件定义,并且他们可以在其它文件中被访问。默认的符号绑定将会被覆盖。一个文件中定义的全局符号可以在另一个文件中访问而不用定义。全局符号只能定义一次,多次定义会导致错误。 注意.globl仅仅是声明符号是全局的,它并未定义任何符号。
  .group group, section, #comdat
  .group 伪指令添加一个section到一个COMDAT group中。
  COMDAT段由它的段名唯一标识。如果链接编辑器遇到多个SHT_SUNW_COMDAT类型的段,并且具有相同的段名,则保留第一个段,丢弃其余的段。任何被应用于丢弃的SHT_SUNW_COMDAT段的重定位都被忽略。在丢弃的段中定义的所有符号都将被删除。
  此外,链接编辑器支持段用于使用-xF选项调用编译器时段序重排的命名约定。如果一个函数被放置在一个这个段被命名为.sectname%funcname 的SHT_SUNW_COMDAT的段中,那么最后被保留的SHT_SUNW_COMDAT 段将被合并到被命名为.sectname的段中。这种方式可以用来将SHT_SUNW_COMDAT 段放置到text, data或任何其他段中作为它们的最终目标。
  .hidden symbol1, symbol2, ..., symbol
  .hidden伪指令声明了符号symbol1 ~ symbolN具有隐式链接的属性范围。所有在动态模块内部引用这些符号的全部绑定到其模块内部的定义上。这些符号在其模块外部不可见。
  .ident "string"
  .ident伪指令在comment段中创建包含一个string的条目,string可以是任何字符序列但是不包括双引号字符(""), 要在字符串中包含双引号字符,请在双引号字符之前加上反斜杠()(ASCII 0x5C)。
  .lcomm name, size, alignment
  .lcomm伪指令在bss段分配size字节大小的存储空间。该存储空间由符号name引用。name不能预先定义,size必须为正整数。如果指定了参数alignment,name引用的地址将被对齐为alignment的倍数。如果未指定alignment,则默认对齐方式为4个字节。
  .local symbol1, symbol2, ..., symbolN
  .local伪指令声明symbol1 ~ symbolN中的每个符号都是local型的。其中的每个符号都定义在输入文件中,其它文件不可以访问这些符号。这些符号之前的绑定将会被覆盖。.local伪指令优先级高于.weak和.global。由于其他文件无法访问.local符号,因此相同名称的.local符号可能存在于多个文件中。.local伪指令只声明该符号在作用域中是local的,但它没有定义该符号。
  .long expression1, expression2, ..., expressionN
  .long伪指令为当前段expression1 ~ expressionN中的每个expression生成一个长整数(32位,二进制的补码值)。每个expression必须为32位的值,并且必须为整数。.long指令对bss段无效。
  .popsection
  .popsection伪指令弹出段堆栈的栈顶,并继续处理弹出的段。
  .previous
  .previous伪指令继续处理之前的段。
  .pushsection section
  .pushsection伪指令将指定的section压入section堆栈并切换到另一个段。
  .quad expression1, expression2, ..., expression
  .quad伪指令在当前段中为expression1 ~ expressionN中的每个expression生成一个初始化的字(64位,二进制的补码值)。每个expression必须是64位的值,并且必须位整数。.quad伪指令对bss部分无效。
  .rel symbol@ type
  .rel伪指令为指定的symbol生成特定type的重定位表项。
  .section section, attributes
  .section伪指令将section设为当前段。如果section 不存在,那么就会创建一个新的拥有特定名字和attributes的段。如果section是一个未保留的段,那么第一次使用.section伪指令来指定section时必须包含attributes。
  .set symbol, expression
  .set伪指令将expression的值赋给symbol。expression可以是计算结果为数值的任何合法表达式。
  .size symbol, expr
  声明symbol大小为expr。expr必须为绝对表达式。
  .skip integer, value
  当我们在为任何数据段生成值时,.skip伪指令会跳过integer个字节,或者(可选地)用指定的value填充integer个字节。
  .sleb128 expression
  .sleb128伪指令从expression中生成一个带符号的LEB128(Little Endian Base 128)的数字。
  .string "string"
  .string伪指令将string中的字符放置到目标模块的当前位置,并以一个空字符(‘’)结束该string。string必须包含在双引号(")(ASCII 0x22)。.string伪指令对bss段无效。
  .symbolic symbol1, symbol2, ..., symbol
  .symbol指令声明列表symbol1~symbolN中的每个symbol都有符号链接器作用域。对动态模块中的symbol的所有引用都绑定到该模块中的定义。在模块之外,symbol被视为全局的。
  .tbss
  .tbss伪指令将当前段设为tbss段。tbss部分包含未初始化的TLS数据对象,该对象将由运行时连接器初始化为0。
  .tcomm
  .tcomm伪指令定义了一个TLS普通块。
  .tdata
  .tdata指令将当前段设为tdata段。Tdata段包含初始化的TLS数据对象的初始化image。
  .text
  .text指令将当前段定义为text段,一般是代码段。
  .type symbol[, symbol, ..., symbol], type[, visibility]
  声明symbol的type,type 可以是如下类型:
  #object #tls_object #function #no_type
  Visibility 可以其下面的值:
  #hidden #protected #eliminate #singleton #exported #internal
  .uleb128 expression
  .uleb128伪指令从expression中生成一个无符号的LEB128(Little Endian Base 128)的数字
  .value expression1, expression2, ..., expression
  .value伪指令为当前段的expression1~ expressionN每个expression生成一个已初始化的字(word)(16位,二进制的补码值)。每个expression必须为16位整数值。.value伪指令对bss段无效。
  .weak symbol1, symbol2, ..., symbolN
  .weak伪指令声明参数列表symbol1~symbolN中的每个symbol可以在外部定义,也可以在输入文件中定义,并可被其他文件访问。symbol的默认绑定会被.weak指令覆盖。如果一个文件中定义了一个弱符号,那么其他文件中若引用的全局符号名与这个弱符号重名,并且全局符号未定义时,那么该弱符号就被用来使用。未解析的weak符号的值为0. 链接编辑器不能解析这些符号。如果一个弱符号与一个已定义的全局符号同名,则该弱符号将被忽略,不会产生错误结果。注意: .weak 伪指令并不定义任何符号。
  .zero expression
  当填充数据段时,.zero伪指令用0(0)来填充expression指定的字节数。

雷军再次让米粉心动,4款小米热销旗舰集体降价,最高直降2000元如今小米的发展战略十分清晰,由雷军领导的小米攀登高端市场,与苹果三星和OV竞争,而由卢伟冰领导的Redmi则主打次旗舰和中低端市场,主要与荣耀iQOO和realme竞争,从目前的销iOS15。5新版本推送,这两个问题已修复了,适合这些用户升级对于智能手机来说一个重要的特点就是可以升级更新系统来获得最新的功能跟体验,除了新功能之外我们也可以通过升级更新系统来修复手机所出现的问题。苹果本周向iPhone手机推送了iOS15外媒台积电被孤立了?先是美日联手,后是三星抢先台积电在业界的地位相信不用多说,其占据全球代工市场超过一半的市场占有率就很有说服力。而且台积电5nm制程芯片的良品率又相对于三星遥遥领先,高通在骁龙888翻车后,基本把后续的旗舰芯从纯电销冠到巨亏117亿!北汽蓝谷证明,拿来主义没有未来从昔日的新能源汽车第一股,到如今两年净利亏损超百亿元,北汽蓝谷只用了三年的时间内。北汽蓝谷创立于2009年,曾一度七年问鼎中国纯电汽车销冠。在2018年时销量达到了15。8万辆,特更安全更环保的固体电解质电池能源人都在看,点击右上角加关注日内瓦大学(UNIGE)的一组研究人员研发固态电解质,可以使离子在钠离子电池内更高效地移动。研究人员将通过改变已知材料增强其导电性来解决钠基设备的关键4000亿赛道大爆发,天大博士夫妻即将收获一个稀缺IPO来源投资家(IDtouzijias)作者刘燃继微创机器人之后,又一家手术机器人企业冲刺港股IPO。投资家网获悉,近日,主攻手术机器人的精锋医疗向港交所提交上市申请,摩根士丹利中金公华为要回来了,华为手机产能开始恢复!7月将发布Mate50系列华为手机品牌是我能熟知的国产品牌,同时它也是一个世界一流信息与通信技术公司,是最大的通讯设备商之一。在2016年11月17日,华为的极化码方案在会议上被通过成为5G的最终方案,5G那些年我用过的手机(20072022)用手机回忆青春本人是个数码产品的发烧友,尤其喜欢研究手机,一直想把自己用过的手机分享出来顺便回忆一下自己的青葱岁月,因为时间跨度比较久,会分成两部分。不知道看着这些手机会不会引起大家的共鸣,会不iOS15。5重新引入AppleMusicAPI允许更改歌曲播放速度一位苹果软件工程师宣布,iOS15。5将包括重新引入广受欢迎的AppleMusicAPI,第三方音乐播放器使用该API,允许用户在应用中更改歌曲的播放速度。在iOS15。4中,苹果怎么样才能让外网的计算机访问一个局域网内的计算机?外网电脑访问内网电脑,目前来说,有2种基本方式,一种是远程控制,一种是内网穿透,下面我分别简单介绍一下,感兴趣的朋友可以尝试一下01远程控制这是最简单的外网电脑访问内网电脑的方式,如何快速使Excel表格打印在一张纸上?大家好,我是头条号Excel自学成才。在打印表格的时候,经常碰到,打印的时候,有一丢丢部分超出了,然后剩下的部分就打印在了第2页,我们在使用了打印预览之后,表格里面会出现1条虚线,
电动车除了上牌,还限载限速考驾照,车主还有必要骑它吗?请您在阅读前,先点击上面的关注。感谢您的支持,我们将为您带来更多有价值的内容。最近,关于电动车的上路规矩引发了很多网友的热议。越来越多的车友开始质疑骑电动车的必要性,甚至有车主灵魂首批绿牌车主,要更换电池了,看到价格后你还要买纯电车吗?导读首批绿牌新能源汽车车主,基本都需要更换电池了,看到价格后,你还要买纯电汽车吗?新能源车五年后大多数就需要换电池,电池价格让人难以接受!车主还不如买台新车!下面就让我们一探究竟!三星的曲面屏手机在中国不受欢迎了,我们该怎么选择?感谢您的阅读!三星手机的曲面屏不仅在中国大受欢迎,而且国产的手机厂商几乎在高端旗舰手机中都在使用三星的曲面屏设计,可以说三星的曲面屏不仅在三星手机上得到了很多消费者的认同,更是在国浪潮新基建当选中国互联网协会数字孪生技术应用工委会副主任单位济南2022年3月31日美通社3月29日下午,中国互联网协会数字孪生技术应用工作委员会2022年第一次全体成员会议在京召开,来自90余家成员单位的100余位行业专家线上线下参会。会PayPal任命新任CIO,负责领导数据与信息技术团队近日,支付巨头PayPal公司宣布,任命ArchanaDeskus为该公司新任执行副总裁兼首席信息官(CIO)。未来,她将主要负责PayPal的全球信息技术业务,领导PayPal的按技术职责还是按领域职责来构建代码?Reddit在构建RESTapi时,您会选择选项Acontrollersorder。goregion。gouser。gomodelsorder。goregion。gouser。goreposo新能源大牛出现!连续3日放量涨停,2。8亿资金已悄然入场中马传动(603767)公司概况公司亮点是我国首批进入汽车变速器领域的民营企业之一市场人气排名17行业人气排名1主营业务汽车变速器及车辆齿轮的研发生产和销售。所属申万行业汽车零部件科学家构建高质量水稻泛基因组科学家构建高质量水稻泛基因组科技日报讯(记者马爱平)近日,中国农业科学院作物科学研究所水稻分子设计技术与应用创新团队和上海交通大学合作,基于111份代表性水稻资源的二代和三代全基因禅游科技斗地主不仅让手游公司上市,还是个竞技运动项目世界三大扑克游戏之一,手游公司的摇钱树如果扑克的玩法也有专利权一说,估计发明人数钱会数到手抽筋。在写这篇文章之前,我还真不知道,原来世界三大扑克游戏玩法,其中之一来自于中国湖北,并华为AgileController准入系统下线方案第一步清除vlanif口下的portal认证配置interfaceVlanif164descriptionWLANOfficeuseripaddress10。233。164。254工信部副部长辛国斌抓紧研究稳定和扩大汽车消费政策加大新能源汽车推广应用力度金一丹中国证券报中证网中证网讯(记者金一丹)据中国汽车流通协会消息,工业和信息化部党组成员副部长辛国斌近日赴中国汽车流通协会调研汽车产业链情况。辛国斌强调,汽车产业是国民经济的重要