将原来的 RSEG CO
改成:
AREA |.text|, CO
;CO
;ALIGN=2表示4字节对齐。若ALIGN=n,这2^n对齐
THUMB ;Thumb 代码
REQUIRE8 ;指定当前文件要求堆栈八字节对齐
PRESERVE8 ;令指定当前文件保持堆栈八字节对齐
------------------------------------------------华丽分割线---------------------------------------------------------------------------------------
-------------------------------------
关于 AREA |.text|, CO DE, READONLY, ALIGN=2
---------------------------------------------------
语法
AREA 段名 属性1, 属性2, ……
作用
用于定义一个代码段或数据段。
段名若以数字开头,则该段名需用“|”括起来,如|1_test| 。
属性字段表示该代码段(或数据段)的相关属性,多个属性用逗号分隔。
常用的属性如下:
CO DE 定义代码段
DA TA 定义数据段
READONLY
指定本段为只读,代码段默认为READONLY
READWRITE
指定本段为可读可写,数据段的默认为READWRITE
COMMON
定义一个通用的段,不包含任何的用户代码和数据。各源文件中同名的COMMON段共享同一段存储单元。
实例:
AREA Init,CO DE,READONLY
语法
ALIGN {表达式{,偏移量}}
作用
通过添加填充字节的方式,使当前位置满足一定的对齐方式。其中,表达式的值用于指定对齐方式,可能的取值为2的幂,如1、2、4、8、16等。若未指定表达式,则将当前位置对齐到下一个字的位置。偏移量也为一个数字表达式,若使用该字段,则当前位置的对齐方式为:2的表达式次幂+偏移量。
实例:
AREA Init,CO DE,READONLY,ALIGN=3
------------------------------------------------华丽分割线---------------------------------------------------------------------------------------
-----------------------------------------------
关于 THUMB
------------------------------------------------------------------------------------------
语法
THUMB
作用
表示以下的代码都是THUMB代码。
------------------------------------------------华丽分割线---------------------------------------------------------------------------------------
--------------------------------
------
-
关于 REQUIRE8及PRESERVE8
----------
----------
----------------------------------------------
语法
REQUIRE(语法格式:requite label)
作用
REQUIRE伪操作用于指定段之间的相互依赖关系.
格式如下:
REQUIRE lable ;其中lable 为所需要的标号的名称.
当进行连接处理包含有“REQUIRE label”伪指令的源文件时,定义label 的源文件也将呗包含
语法
REQUIRE8及PRESERVE8
作用
REQUIRE8伪操作指示当前代码中要求数据栈8字节对齐
PRESERVE8伪操作表示当前代码中数据栈是8字节对齐的
说明
LDRD及STRD指令要求内存单元地址是8字节对齐的.当在程序中使用这些指令在数据栈中传送数据时,要求该数据栈是8字节对齐的,
这时就需要用REQUIRE8伪指令来说明.链接器要保证要求8字节对齐的数据栈代码只能被数据栈是8字节对齐的代码调用.