- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
在ARM/Thumb汇编语言程序中,程序是以程序段(Section)的形式呈现的。程序段是具有特定名称的相对独立指令或数据序列。程序段有两大类型:代码段(Code Section)和数据段(Data Section)。代码段的主要内容为执行代码,而数据段则存放代码运行时需要用到的数据。一个汇编语言程序应当至少应该包含有一个代码段,但当程序较长时,可以将一个长的代码段或者数据段分割为多个代码段或者多个数据段。然后通过程序编译链接(link)最终形成一个可执行的映像文件。 一个可执行映像文件通常由以下几部分构成: 一个或多个代码段,代码段的属性为只读(RO); 零个或多个包含初始化数据的数据段,数据段的属性为可读写(RW); 零个或多个不包含初始化数据的数据段,数据段的属性为可读写(RW)。 一个可执行映像文件通常由以下几部分构成: 一个或多个代码段,代码段的属性为只读(RO); 零个或多个包含初始化数据的数据段,数据段的属性为可读写(RW); 零个或多个不包含初始化数据的数据段,数据段的属性为可读写(RW)。 链接器(linker)根据系统默认或用户设定的规则,将各个段安排在存储器中的相应位置。因此源程序中段之间的相对位置与可执行的映像文件中段的相对位置一般不会相同。 基本结构实例: AREA Init , CODE , READONLY ;定义名为Init只读代码段 ENTRY ;标识程序的入口点 start LDR R0 , =0;加载地址到R0 LDR R1 , 0xff ;加载数据到R1 STR R1 , [R0] ;存储R1中的数据到R0中的地址 LDR R0 , =0;加载地址到R0 LDR R1 , 0x01 ;加载数据到R1 STR R1 , [R0] ;存储R1中的数据到R0中的地址 …… END ;代码段结束标识 虽然汇编指令比较多,但是其指令操作的格式一般式固定的,ARM和Thumb汇编语言的语句格式为: {标号} {指令或伪指令助记符} {;注释} 注意: 指令的助记符写法要么全部大写要么全部小写,不可以在一条指令中既有大写又有小写,不可以大小写混合使用; 如果一条语句太长,可以拆分成若干行来写,但需要在行末尾用续行符“\”来标识下一行与本行同属于一条语句。 汇编程序中除了会用到ARM或者Thumb指令之外,还会需要一些符号、常量、变量和变量代换等。这些类型一般也是有具体要求的: 符号主要用来代替地址、变量或者常量,但是其不应与指令或者伪指令同名,并且它们是区分大小写的,不能与系统的保留字相冲突; 常量包括逻辑常量、字符串常量和数字常量:逻辑常量只取两种值(真或者假);字符串常量保存一固定的字符串,用于程序运行时的信息;数字常量一般为32位的整数,无符号时可表示范围为0~232-2,有符号时可表示范围为-231~231-1; 变量包括逻辑变量、字符串变量和数字变量:其中逻辑变量用于程序运行中保存逻辑值(真或者假);字符串变量保存字符串,但字符串的长度不能超出字符串变量所能表示的范围;数字变量保存数字值,但数字大小不能超出变量的表示范围; 变量可以通过代换取得一个常量,代换的操作符为“$”:如果“$”在逻辑变量前面,编译器会将该逻辑变量代换为它的取值(真或者假);如果“$”在字符串变量前面,编译器会将该字符串变量的值代换“$”后的字符串变量;如果“$”在数字变量前面,编译器会将该数字变量的值转换为十六进制的字符串,并将该十六进制的字符串代换“$”后面的变量。 Linux下GCC的汇编语言程序语言程序是以程序段为单位进行组织的。现在Linux下GCC的汇编语言规则总结如下: 所有的指令均不能顶格写; 大小写区分(要么全部大写,要么全部小写,不可以大小写混用); 代码标号必须在一行的顶格,后面要加上冒号“:”; 注释的内容可以使用符号“@”,其后面的内容编译器会放弃编译。注释可以在一行的顶格。 实例: .EXAMPLE1 @表示是只读代码段 _START: .GOLBAL START @START作为链接器使用 .GOLBAL MAIN @MAIN函数 B MAIN @跳转至MAIN函数 MAIN: MOV R0,#0 @R0=0 LDR R1,#1 @R1=1 ADDOP: ADD R2,R1,R0 @R2=R1+R0
您可能关注的文档
- 局域网组建、配置与维护项目教程 第2版 作者 吴献文 项目4 办公局域网组建配置与维护.ppt
- 局域网组建、配置与维护项目教程 第2版 作者 吴献文 项目5 实训室局域网组建配置与维护.ppt
- 局域网组建技术案例教程 湖南省教育科学“十一五” 规划重点资助课题研究成果教材 作者 吴献文 陈承欢 第1章 局域网组网的理论基础.ppt
- 局域网组建技术案例教程 湖南省教育科学“十一五” 规划重点资助课题研究成果教材 作者 吴献文 陈承欢 第3章 局域网组建实战.ppt
- 局域网组建技术案例教程 湖南省教育科学“十一五” 规划重点资助课题研究成果教材 作者 吴献文 陈承欢 第4章 局域网接入Internet.ppt
- 局域网组建技术案例教程 湖南省教育科学“十一五” 规划重点资助课题研究成果教材 作者 吴献文 陈承欢 第6章 局域网安全与管理.ppt
- 局域网组建技术案例教程 湖南省教育科学“十一五” 规划重点资助课题研究成果教材 作者 吴献文 陈承欢 第7章 局域网常见故障的检测与排除.ppt
- 局域网组建与维护 第2版 项目教学 作者 王霞 曹洪欣 项目1.ppt
- 局域网组建与维护 第2版 项目教学 作者 王霞 曹洪欣 项目3.ppt
- 局域网组建与维护 第2版 项目教学 作者 王霞 曹洪欣 项目5.ppt
- 嵌入式Linux系统开发教程 作者 978-7-302-22520-1 第五章.ppt
- 嵌入式Linux系统开发教程 作者 978-7-302-22520-1 第一章.ppt
- 嵌入式Linux应用开发教程 作者 华清远见嵌入式学院 赵苍明 穆煜 第二章嵌入式linux C语言开发工具.ppt
- 嵌入式Linux应用开发教程 作者 华清远见嵌入式学院 赵苍明 穆煜 第九章 Qt图形编程.ppt
- 嵌入式Linux应用开发教程 作者 华清远见嵌入式学院 赵苍明 穆煜 第六章 嵌入式Linux多任务编程.ppt
- 嵌入式Linux应用开发教程 作者 华清远见嵌入式学院 赵苍明 穆煜 第七章 嵌入式Linux网络编程.ppt
- 嵌入式Linux应用开发教程 作者 华清远见嵌入式学院 赵苍明 穆煜 第三章 嵌入式LinuxC基础.ppt
- 嵌入式Linux应用开发教程 作者 华清远见嵌入式学院 赵苍明 穆煜 第十章综合实例 - 视频监控系统.ppt
- 嵌入式Linux应用开发教程 作者 华清远见嵌入式学院 赵苍明 穆煜 第一章嵌入式系统基础.ppt
- 嵌入式操作系统 Linux篇 作者 华清远见嵌入式学院 程姚根 苗德行 第2章 Linux操作系统使用.ppt
原创力文档


文档评论(0)