Chinaunix首页 | 论坛 | 博客
  • 博客访问: 501660
  • 博文数量: 174
  • 博客积分: 8001
  • 博客等级: 中将
  • 技术积分: 1840
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-04 19:30
文章分类

全部博文(174)

文章存档

2011年(1)

2010年(24)

2009年(149)

我的朋友

分类: LINUX

2009-04-10 17:50:56

一开始把这样的事情做对事必要的,养成好的习惯。

汇编语言源文件的编排
汇编语言的源代码行的一般格式
{label} {instruction|directive|pseudo-instruction} {;comment}
注意
即使没有标签,指令、伪指令和命令前面也必须使用空格或制表符等留出空白。
某些指令不允许使用标签。
源代码行的所有三部分都是可选的。 使用空行可使代码更具可读性。
大小写规则
指令助记符、指令和符号寄存器名称可以用大写或小写,但不能混合使用大小
写。
行长度
为使源文件更容易阅读,可以在行尾放置反斜杠字符 (\),将较长的源代码行拆
分为多个行。 反斜杠后面不得有任何其他字符(包括空格和制表符)。 汇编器
将反斜杠后跟行尾序列视为空白。
注意
不要在带引号的字符串内使用反斜杠后跟行尾序列。
行长度的最大值为 4095 个字符,包括使用反斜杠的任何扩展在内。
标签
标签是表示地址的符号。 在汇编期间将计算由标签指定的地址。
汇编器计算标签相对于定义标签的节的原点的地址。 引用同一节内的标签时可
以使用 pc 加上或减去偏移量。 这称为程序相对寻址。
其他节中标签的地址是在链接时计算的,此时链接器已在内存中为每一节分配
了具体的位置。
局部标签
局部标签是标签的一个子类。 局部标签以 0 到 99 范围内的某个数字开头。与其
他标签不同的是,局部标签可以定义多次。 如果用宏生成标签,局部标签就十
分有用。 当汇编器找到一个对局部标签的引用时,就会将其链接到该局部标签
的相邻实例上。
局部标签的范围由 AREA 指令加以限制。 使用 ROUT 指令可以更严格地限制其范
围。
注释
行中的第一个分号标记注释的开始,但不包括出现在字符串常数内的分号。 行
的末尾就是注释的结束。 一个注释本身就是一个有效的行。 汇编器将忽略所有
注释。
常数
常数可以是:
数字 可接受下列形式的数字常数:
• 十进制数,例如 123
• 十六进制数,例如 0x7B
• n_xxx,其中:
n 是 2 到 9 之间的基数
xxx 是采用该基数的数字
• 浮点数,例如 0.02、123.0 或 3.14159
仅当系统具有使用浮点数的 VFP 或 NEON 时,浮点数才可用。
布尔值 布尔常数 TRUE 和 FALSE 必须书写为 {TRUE} 和 {FALSE}。
字符 字符常数由左右单引号组成,中间括有单个字符或一个采用标准
的 C 转义字符的转义字符。
字符串 字符串由用双引号括起的多个字符和空格组成。 如果在一个字符
串内使用了双引号或美元符号作为文本字符,则这些符号必须用
一对相应的字符来表示。 例如,如果需要在字符串内使用单个 $,
则必须书写为 $$。 在字符串常数内可以使用标准 C 转义序列。
ELF 节和 AREA 指令
ELF 节 是独立的、已命名的、不可分割的代码或数据序列。 单个代码节是生成
应用程序的最低要求。
汇编或编译的输出内容可包括:
• 一个或多个代码节。 它们通常是只读节。
• 一个或多个数据节。 它们通常是读写节。 它们可以是零初始化的 (ZI)。
链接器依照节位置规则,将每个节放在一个程序映像中。 在源文件中相邻的节
在应用程序映像中不一定相邻。 有关链接器如何放置节的详细信息,请参阅
《链接器用户指南》中的第5 章 使用分散加载描述文件。
在源文件中,AREA 指令标记一节的开始。 该指令对节进行命名并设置其属性。
属性放在名称后面,之间用逗号分隔。
阅读(1156) | 评论(0) | 转发(0) |
0

上一篇:示例

下一篇:ARM ASM的选择排序

给主人留下些什么吧!~~