lecture7-assemble language.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
lecture7-assemble language

生成二进制文件的过程 编译器的基本功能 规定汇编语言的语法规则 ADS Vs. GNU 预编译(Pre-assembler) →标准汇编语言 编译→二进制文件 预编译(Pre-assembler) 处理伪指令(Pseudo-Instruction) 伪指令:做为汇编语言的参数,或被预编译器识别,翻译成标准汇编语言。 伪指令的功能: 提高程序的可读性和易维护性 易于编程 链接器(Linker) 将多个目标文件链接成一个可执行的文件 编译器只负责把程序翻译成机器码,但处理与存储器地址相关的内容,这部分工作由链接器来完成; 一个程序编译完成后会分成代码段(Read-Only,RO)、数据段(Read-Write,RW)、零初始化段(Zero-Initialized,ZI),需要把不同的程序的不同区段链接成一个完整连续的区。 伪指令 符号定义伪指令 数据定义伪指令 汇编控制伪指令 信息报告伪指令 宏指令以及其他伪指令。 符号定义伪指令Ⅰ 用于定义ARM汇编程序中的变量、对变量赋值以及定义寄存器的别名等。 用于定义局部变量的LCLA、LCLL、LCLS; 用于定义全局变量的GBLA、GBLL、GBLS ; 用于对变量赋值的SETA、SETL、SETS ; 为通用寄存器列表定义名称的RLIST。 符号定义伪指令Ⅱ 1.?LCLA、LCLL、LCLS 格式:LCLA/LCLL/LCLS 局部变量名 说明:LCLA、LCLL、LCLS伪指令用于定义一个汇编程序中的局部变量,并初始化,其中: LCLA定义一个局部的数字变量,初始化为0; LCLL定义一个局部的逻辑变量,初始化为F; LCLS定义一个局部的字符串变量,初始化为空串; 这三条伪指令用于声明局部变量,在其局部作用范围内变量名必须唯一。 符号定义伪指令Ⅲ 2.? GBLA、GBLL、GBLS 格式:GBLA/GBLL/GBLS 变量名 说明:GBLA、GBLL、GBLS伪操作定义一个汇编程序中的全局变量,并初始化,其中: GBLA定义一个全局数字变量,并初始化为0; GBLL定义一个全局逻辑变量,并初始化为“F”; GBLS定义一个全局字符串变量,并初始化为空串; 这三条伪指令用于定义全局变量,因此在整个程序范围内变量名必须唯一。 符号定义伪指令Ⅳ 3. SETA、SETL、SETS 格式:变量名 SETA/SETL/SETS 表达式 说明:SETA:给一个数字变量赋值; SETL:给一个逻辑变量赋值; SETS:给一个字符串变Ⅳ量赋值; 格式中的变量名必须为已经定义过的全局或局部变量,表达式为将要赋给变量的值。 符号定义伪指令Ⅴ 4. RLIST 格式:名称 RLIST {寄存器列表} 说明:RLIST可用于对一个通用寄存器列表定义名称,该名称可在ARM指令LDM/STM中使用。在LDM/STM指令中,列表中的寄存器为根据寄存器的编号由低到高访问次序,与列表中的寄存器排列次序无关。 数据定义伪指令Ⅰ 用于为数据分配存储单元,同时也可完成已分配存储单元的初始化。 DCB DCW/DCWU DCD/DCDU DCQ/DCQU DCFS/DCFSU DCFD/DCFDU SPACE FIELD MAP 数据定义伪指令Ⅱ 1.??DCB: 标号 DCB 表达式 说明:DCB用于分配一块字节单元并用伪指令中指定的表达式进行初始化。其中,表达式可以为使用双引号的字符串或0——255的数字,DCB可用“=”代替。 2.? DCW/DCWU: 标号 DCW/DCWU 表达式 说明:DCW分配一段半字存储单元并用表达式值初始化,它定义的存储空间是半字对齐的。 数据定义伪指令Ⅲ 3.??DCD/DCDU: 标号 DCD/DCDU 表达式 说明:DCD伪指令用于分配一块字存储单元并用伪指令中指定的表达式初始化,它定义的存储空间是字对齐的。DCD也可用“”代替。 4.??DCQ/DCQU: 标号 DCQ/DCQU 表达式 说明:DCQ用于分配一块以8个字节为单位的存储区域并用伪指令中指定的表达式初始化,它定义的存储空间是字对齐的。DCQU功能跟DCQ类似,只是分配的存储单元不严格字对齐。 数据定义伪指令Ⅳ 5.DCFD/DCFDU: 标号 DCFD/DCFDU 表达式 说明:DCFD用于为双精度的浮点数分配一片连续的字存储单元并用伪指令中指定的表达式初始化,它定义的存储空间是字对齐的,每个双精度的浮点数占据两个字单元。DCFD

文档评论(0)

hf916589 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档