资料介绍
10.4 ARM汇编编译器的使用
armasm是ARM汇编语言的交叉编译器,本节将详细介绍它的使用方法。
armasm命令行语法格式如下。
armasm options inputfile
在armasm命令中,除了文件名区分大小写之外,其他的参数都不区分大小写。option可是汇编器规定选项中的一个或多个的组合,多个选项用空格分开。下面详细介绍armasm的各参数。
· --16:告诉汇编器当前程序是Thumb指令程序,使用旧的Thumb语法,与在源程序开头使用伪操作CODE16意义相同。使用--thumb选项指定当前程序是使用ARM语法的Thumb或Thumb-2源程序。
· --32:告诉汇编器所处理的源程序是ARM指令的程序。此选项为汇编器的默认选项。
· --apcs [qualifiers]:该选项告诉汇编器是否使用AAPCS标准编译源程序。详见AAPCS一节。
· --arm:同--32选项。
· --bigend:告诉汇编器将源程序按大端模式编译。汇编器默认为小端模式(littleend)。
· --brief_diagnostics:控制输出诊断信息。详见控制诊断信息输出一节。
· --littleend:告诉编译器将源程序按小端模式编译。这是汇编器的默认选项。
· --checkreglist:告诉汇编器检测RLIST、LDM、STM指令的寄存器列表是否按升序排列。使用此选项后,如果源程序中寄存器没有按升序排列,汇编器将给出警告信息。
· --cpu name:告诉汇编器允许程序所使用的CPU型号,详见CPU名一节。
· --debug:告诉编译器编译时产生DWARF格式的调试信息表。
· --depend dependfile:告诉编译器将程序的依赖关系列表输出到指定的dependfile文件中。当使用makefile文件对程序进行编译时,该选项十分有用。
· --diag_[error | remark | warning | suppress | style]:详见控制诊断信息输出一节。
· --dllexport_all:告诉编译器产生全局变量的动态可见列表(dynamic visibility),在将源程序编译成DLL文件时使用该选项。
· --dwarf2:和--debug选项配合使用。告诉编译器编译时产生DWARF2格式的调试信息表,当使用了--debug选项时,该选项为默认选项。
· --dwarf3:和--debug选项配合使用。告诉编译器编译时产生DWARF3格式的调试信息表。
· -m:告诉编译器将源文件的依赖关系列表输出到标准输出设备上。
· --md:告诉编译器将源文件的依赖关系列表输出到inputfile.d文件中。
· --errors errorfile:告诉编译器将编译的错误信息输出到errorfile文件中。
· --exceptions:详见指示编译器产生异常向量表一节。
· --exceptions_unwind:详见指示编译器产生anwind异常向量表一节。
· --fpmode model:详见10.4.3。
· --fpu name:选择指定目标系统中浮点运算单元的体系结构。
· -i dir [,dir]…:为源文件搜索增加路径,如果要搜索的源文件路径已被此选项指定,那么在使用伪操作GET、INCLUDE、INCBIN包含源文件时,将不必指定搜索路径。
· --keep:指定汇编器将局部符号保留在目标文件的符号表中,供调试器进行调试时使用。
· --list [listingfile]:告诉汇编器将汇编过程中产生的汇编程序列表保存到列表文件listingfile文件中。
· --maxcache n:指定最大的源程序cache大小,默认为8MB。
· --memaccess attributes:确定目标系统的内存属性。详见内存访问属性一节。
· --no_cache:禁止源程序cache。默认情况下源程序cache是打开的。
· --no_esc:禁止C风格的特殊符号,如“\n”、“\t”。
· --no_exceptions:详见异常向量表产生一节。
· --no_exceptions_unwind:详见异常向量表产生一节。
· --no_hide_all:控制符号的可见性。
· --no_regs:告诉编译器不使用汇编器预定义的寄存器名。
· --no_warn:禁止警告信息。
· -o filename:给输出的目标文件命名。
· --predefine“directive”:告诉编译器预执行SET伪操作。详见预执行SET伪操作一节。
· --split_ldm:详见LDM和STM指令。
· --thumb:告诉编译器将源文件编译为符合ARM语法的Thumb指令。此编译选项和在源文件头使用THUMB伪操作效果相同。
· --unsafe:降低汇编器的警告级别。详见控制针对信息输出一节。
· --via file:指示汇编器从指定文件file中读取各选项信息。
· inputfile:为输入的源程序,必须是ARM或Thumb汇编源程序。
下面各节详细介绍以上选项中常用到的选项。
10.4.1 选项说明列表
在命令行输入下面的汇编命令,可使汇编器输出所有可用选项类别。
armasm –help
10.4.2 过程调用标准AAPCS
为了使不同编译器编译的程序之间能够相互调用,必须为子程序间的调用规定一定的规则。AAPCS就是这样一个标准。所谓AAPCS,其英文全称为Procedure Call Standard for the ARM Architecture (AAPCS),即ARM体系结构过程调用标准。它是ABI(Application Binary Interface (ABI) for the ARM Architecture (base standard) [BSABI])标准的一部分。
可以使用“--apcs”选项告诉编译器将源代码编译成符号AAPCS调用标准的目标代码。
注意使用“--apcs”选项并不影响代码的产生,编译器只是在各段中放置相应的属性,标识用户选定的AAPCS属性。
与AAPCS相关的编译/汇编选项有以下几种。
· none:指定输入文件不使用AAPCS规则。
· /interwork:指定输入文件符合ARM/Thumb交互标准。
· /nointerwork:指定输入文件不能使用ARM/Thumb交互。这是编译器默认选项。
· /ropi:指定输入文件是位置无关只读文件。
· /noropi:指定输入文件是非位置无关只读文件。这是编译器默认选项。
· /pic:同/ropi。
· /nopic:同/noropi。
· /rwpi:指定输入文件是位置无关可读可写文件。
· /norwpi:指定输入文件是非位置无关可读可写文件。
· /pid:同/rwpi。
· /nopid:同/norwpi。
· /fpic:指定输入文件编译成位置无关只读代码。代码中地址是FPIC地址。
· /swstackcheck:编译过程中对输入文件使用堆栈检测。
· /noswstackcheck:编译过程中对输入文件不使用堆栈检测。这是编译器默认选项。
· /swstna:如果汇编程序对于是否进行数据栈检查无所谓,而与该汇编程序连接的其他程序指定了选项/swst或选项/noswst,这时该汇编程序使用选项/swstna。
10.4.3 浮点模式选项
“--fpmode model”选项指定所选的浮点模式。可使用的浮点模式有以下几种。
· ieee_full:所有的浮点操作符号IEEE标准,其中包括单精度浮点操作和双精度浮点操作。浮点模式可以在使用时动态选择。使用该选项,编译器将使用下面的预定义符号。
__FP_IEEE;
__FP_FENV_EXCEPTIONS;
__FP_FENV_ROUNDING;
__FP_INEXACT_EXCEPTION。
· ieee_fixed:符合IEEE标准的浮点运算异常处理规则。使用该选项,编译器将使用下面的预定义符号。
__FP_IEEE;
__FP_FENV_EXCEPTIONS。
· ieee_no_fenv:和JAVA兼容的浮点运算算法选择。预定义的符号为__FP_IEEE。
· std:和C和C++兼容的浮点运算算法选择。这是编译器默认选项。
· fast:快速浮点运算选项。使用该选项将影响浮点运算的精度。
10.4.4 为CPU命名选项
使用“--cpu name”选项为目标程序使用的CPU命名。其中name的取值为4T、5TE或6T2。编译器的默认值为ARM7TDMI。
下面的选项使编译器列出所有当前可使用的CPU名。
armasm --cpu list
10.4.5 为FPU命名选项
选项“--FPU”指定所使用的浮点运算单元的结构。
armasm是ARM汇编语言的交叉编译器,本节将详细介绍它的使用方法。
armasm命令行语法格式如下。
armasm options inputfile
在armasm命令中,除了文件名区分大小写之外,其他的参数都不区分大小写。option可是汇编器规定选项中的一个或多个的组合,多个选项用空格分开。下面详细介绍armasm的各参数。
· --16:告诉汇编器当前程序是Thumb指令程序,使用旧的Thumb语法,与在源程序开头使用伪操作CODE16意义相同。使用--thumb选项指定当前程序是使用ARM语法的Thumb或Thumb-2源程序。
· --32:告诉汇编器所处理的源程序是ARM指令的程序。此选项为汇编器的默认选项。
· --apcs [qualifiers]:该选项告诉汇编器是否使用AAPCS标准编译源程序。详见AAPCS一节。
· --arm:同--32选项。
· --bigend:告诉汇编器将源程序按大端模式编译。汇编器默认为小端模式(littleend)。
· --brief_diagnostics:控制输出诊断信息。详见控制诊断信息输出一节。
· --littleend:告诉编译器将源程序按小端模式编译。这是汇编器的默认选项。
· --checkreglist:告诉汇编器检测RLIST、LDM、STM指令的寄存器列表是否按升序排列。使用此选项后,如果源程序中寄存器没有按升序排列,汇编器将给出警告信息。
· --cpu name:告诉汇编器允许程序所使用的CPU型号,详见CPU名一节。
· --debug:告诉编译器编译时产生DWARF格式的调试信息表。
· --depend dependfile:告诉编译器将程序的依赖关系列表输出到指定的dependfile文件中。当使用makefile文件对程序进行编译时,该选项十分有用。
· --diag_[error | remark | warning | suppress | style]:详见控制诊断信息输出一节。
· --dllexport_all:告诉编译器产生全局变量的动态可见列表(dynamic visibility),在将源程序编译成DLL文件时使用该选项。
· --dwarf2:和--debug选项配合使用。告诉编译器编译时产生DWARF2格式的调试信息表,当使用了--debug选项时,该选项为默认选项。
· --dwarf3:和--debug选项配合使用。告诉编译器编译时产生DWARF3格式的调试信息表。
· -m:告诉编译器将源文件的依赖关系列表输出到标准输出设备上。
· --md:告诉编译器将源文件的依赖关系列表输出到inputfile.d文件中。
· --errors errorfile:告诉编译器将编译的错误信息输出到errorfile文件中。
· --exceptions:详见指示编译器产生异常向量表一节。
· --exceptions_unwind:详见指示编译器产生anwind异常向量表一节。
· --fpmode model:详见10.4.3。
· --fpu name:选择指定目标系统中浮点运算单元的体系结构。
· -i dir [,dir]…:为源文件搜索增加路径,如果要搜索的源文件路径已被此选项指定,那么在使用伪操作GET、INCLUDE、INCBIN包含源文件时,将不必指定搜索路径。
· --keep:指定汇编器将局部符号保留在目标文件的符号表中,供调试器进行调试时使用。
· --list [listingfile]:告诉汇编器将汇编过程中产生的汇编程序列表保存到列表文件listingfile文件中。
· --maxcache n:指定最大的源程序cache大小,默认为8MB。
· --memaccess attributes:确定目标系统的内存属性。详见内存访问属性一节。
· --no_cache:禁止源程序cache。默认情况下源程序cache是打开的。
· --no_esc:禁止C风格的特殊符号,如“\n”、“\t”。
· --no_exceptions:详见异常向量表产生一节。
· --no_exceptions_unwind:详见异常向量表产生一节。
· --no_hide_all:控制符号的可见性。
· --no_regs:告诉编译器不使用汇编器预定义的寄存器名。
· --no_warn:禁止警告信息。
· -o filename:给输出的目标文件命名。
· --predefine“directive”:告诉编译器预执行SET伪操作。详见预执行SET伪操作一节。
· --split_ldm:详见LDM和STM指令。
· --thumb:告诉编译器将源文件编译为符合ARM语法的Thumb指令。此编译选项和在源文件头使用THUMB伪操作效果相同。
· --unsafe:降低汇编器的警告级别。详见控制针对信息输出一节。
· --via file:指示汇编器从指定文件file中读取各选项信息。
· inputfile:为输入的源程序,必须是ARM或Thumb汇编源程序。
下面各节详细介绍以上选项中常用到的选项。
10.4.1 选项说明列表
在命令行输入下面的汇编命令,可使汇编器输出所有可用选项类别。
armasm –help
10.4.2 过程调用标准AAPCS
为了使不同编译器编译的程序之间能够相互调用,必须为子程序间的调用规定一定的规则。AAPCS就是这样一个标准。所谓AAPCS,其英文全称为Procedure Call Standard for the ARM Architecture (AAPCS),即ARM体系结构过程调用标准。它是ABI(Application Binary Interface (ABI) for the ARM Architecture (base standard) [BSABI])标准的一部分。
可以使用“--apcs”选项告诉编译器将源代码编译成符号AAPCS调用标准的目标代码。
注意使用“--apcs”选项并不影响代码的产生,编译器只是在各段中放置相应的属性,标识用户选定的AAPCS属性。
与AAPCS相关的编译/汇编选项有以下几种。
· none:指定输入文件不使用AAPCS规则。
· /interwork:指定输入文件符合ARM/Thumb交互标准。
· /nointerwork:指定输入文件不能使用ARM/Thumb交互。这是编译器默认选项。
· /ropi:指定输入文件是位置无关只读文件。
· /noropi:指定输入文件是非位置无关只读文件。这是编译器默认选项。
· /pic:同/ropi。
· /nopic:同/noropi。
· /rwpi:指定输入文件是位置无关可读可写文件。
· /norwpi:指定输入文件是非位置无关可读可写文件。
· /pid:同/rwpi。
· /nopid:同/norwpi。
· /fpic:指定输入文件编译成位置无关只读代码。代码中地址是FPIC地址。
· /swstackcheck:编译过程中对输入文件使用堆栈检测。
· /noswstackcheck:编译过程中对输入文件不使用堆栈检测。这是编译器默认选项。
· /swstna:如果汇编程序对于是否进行数据栈检查无所谓,而与该汇编程序连接的其他程序指定了选项/swst或选项/noswst,这时该汇编程序使用选项/swstna。
10.4.3 浮点模式选项
“--fpmode model”选项指定所选的浮点模式。可使用的浮点模式有以下几种。
· ieee_full:所有的浮点操作符号IEEE标准,其中包括单精度浮点操作和双精度浮点操作。浮点模式可以在使用时动态选择。使用该选项,编译器将使用下面的预定义符号。
__FP_IEEE;
__FP_FENV_EXCEPTIONS;
__FP_FENV_ROUNDING;
__FP_INEXACT_EXCEPTION。
· ieee_fixed:符合IEEE标准的浮点运算异常处理规则。使用该选项,编译器将使用下面的预定义符号。
__FP_IEEE;
__FP_FENV_EXCEPTIONS。
· ieee_no_fenv:和JAVA兼容的浮点运算算法选择。预定义的符号为__FP_IEEE。
· std:和C和C++兼容的浮点运算算法选择。这是编译器默认选项。
· fast:快速浮点运算选项。使用该选项将影响浮点运算的精度。
10.4.4 为CPU命名选项
使用“--cpu name”选项为目标程序使用的CPU命名。其中name的取值为4T、5TE或6T2。编译器的默认值为ARM7TDMI。
下面的选项使编译器列出所有当前可使用的CPU名。
armasm --cpu list
10.4.5 为FPU命名选项
选项“--FPU”指定所使用的浮点运算单元的结构。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
下载该资料的人也在下载
下载该资料的人还在阅读
更多 >
- 你用的ARM处理器该选择哪个编译器?
- CompCert编译器目标代码生成机制研究综述 7次下载
- C语言编译器常见的预编译指令详细资料说明
- CCS编译器的使用手册资料免费下载 18次下载
- MASM5.0汇编编译器软件免费下载 24次下载
- 如何将C源代码从MPLAB C18编译器移植到MPLAB XC8C编译器的详细概述
- MSP430优化C/C++编译器V 3.3用户指南 7次下载
- TMS320C54x汇编语言工具C/C++编译器的功能优化详细概述 10次下载
- 如何使用ARMC编译器编写高效的定点算术编码或汇编 8次下载
- TMS320F28x 优化C/C++编译器用户指南 25次下载
- C编译器及其优化 2次下载
- ARM最优CC++编译器用户指南 3次下载
- 编译器_keil的优化选项问题 3次下载
- AVRC (AVR的PASCAL编译器)
- 汇编语言集成编译器(软件) 1.0版 0次下载
- 什么样的代码会被编译器优化 92次阅读
- Keil编译器优化方法 738次阅读
- 领域编译器发展的前世今生 1748次阅读
- 交叉编译器安装教程 3558次阅读
- VScode编译器如何配置C/C++编译环境 5662次阅读
- 编译器优化对函数的影响 2862次阅读
- 虚拟机:编译器对C函数的名字修饰 2576次阅读
- 米尔科技ARM编译器介绍 1508次阅读
- 如何选择PIC单片机的C编译器 5429次阅读
- 深入编程语言和编译器是怎样工作的 4372次阅读
- 编译器原理到底是怎样的带你简单的了解编译器原理 1.1w次阅读
- PROTEUS 简介 Proteus自带汇编编译器的使用 1.9w次阅读
- verilog编译指令_verilog编译器指示语句(数字IC) 1.5w次阅读
- 编译器是如何工作的_编译器的工作过程详解 1.6w次阅读
- 编译器跟编辑器有什么区别 3w次阅读
下载排行
本周
- 1电子电路原理第七版PDF电子教材免费下载
- 0.00 MB | 1490次下载 | 免费
- 2单片机典型实例介绍
- 18.19 MB | 92次下载 | 1 积分
- 3S7-200PLC编程实例详细资料
- 1.17 MB | 27次下载 | 1 积分
- 4笔记本电脑主板的元件识别和讲解说明
- 4.28 MB | 18次下载 | 4 积分
- 5开关电源原理及各功能电路详解
- 0.38 MB | 10次下载 | 免费
- 6基于AT89C2051/4051单片机编程器的实验
- 0.11 MB | 4次下载 | 免费
- 7蓝牙设备在嵌入式领域的广泛应用
- 0.63 MB | 3次下载 | 免费
- 89天练会电子电路识图
- 5.91 MB | 3次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234313次下载 | 免费
- 2PADS 9.0 2009最新版 -下载
- 0.00 MB | 66304次下载 | 免费
- 3protel99下载protel99软件下载(中文版)
- 0.00 MB | 51209次下载 | 免费
- 4LabView 8.0 专业版下载 (3CD完整版)
- 0.00 MB | 51043次下载 | 免费
- 5555集成电路应用800例(新编版)
- 0.00 MB | 33562次下载 | 免费
- 6接口电路图大全
- 未知 | 30320次下载 | 免费
- 7Multisim 10下载Multisim 10 中文版
- 0.00 MB | 28588次下载 | 免费
- 8开关电源设计实例指南
- 未知 | 21539次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935053次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537791次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420026次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234313次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233045次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191183次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183277次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138039次下载 | 免费
评论