ARM技术论坛
直播中

万航渡路

8年用户 1258经验值
擅长:电源/新能源
私信 关注
[经验]

ARM编译器的分类(下)

二、armasm

armasm工具,只能编译ARM汇编代码,不能编译GNU汇编代码。

1、-I

指定搜索目录

2、–cpu

指定的指令集

如 –cpu=8-A.64 , 指定armv8架构的64bit的指令集

3、-g

汇编,加上调试信息

4、–predefine

定义一个宏,传递给汇编代码中使用。

例子:

三、armlink:

链接器,用来链接各个.o文件,得到最终的elf。

1、–ro_base

指定RO段的起始地址

2、–rw_base

指定RW段的起始地址

3、–zi_base

指定bss段的起始地址

4、–map –symbols

显示生成镜像的memory map,以及symbols信息

5、–scatter

指定链接脚本

6、–output

指定生成的文件

7、诊断信息

诊断信息的选项:

8、不使用链接脚本

使用armlink链接init.o 和 main.o,生成可执行文件。其中代码段起始地址是0,数据段起始地址是0x400000,bss段的起始地址是0x405000。

init.o的init段,作为生成可执行文件的最开始段。

9、使用链接脚本

以下是使用链接脚本来进行链接。

下图中,链接脚本的格式。

外面指定LR1,是一个大段,从地址0x0000-0x2000。在这个RL1段,包括3个小段

◾ER_RO: 只读段,从0地址开始。其中init.o的INIT段作为这个段的开始,其他段放置在这个段的后面

◾ER_RW: 可读可写段,从0x400000开始

◾ER_ZI: bss段,从0x405000开始

10、#pragma pack(n)

#pragma用来指定打包数据时,各个数据的空间占据。

对于char型,占用1个字节, 对于short型,占用2个字节, 对于int型,占用4个字节。

fromelf

反汇编工具。

fromelf –text –c –a elf文件 -o 文本文件

原作者:卢骏

更多回帖

发帖
×
20
完善资料,
赚取积分