ARM的ADS汇编器与GCC汇编器
2012-07-25 17:42
204 查看
ARM的ADS汇编器与GCC汇编器
2009-10-14 10:06
http://hi.baidu.com/%B6%FB%B6%AB%BC%AA/blog/item/dd4be70867c05fdb62d98614.html
2009-10-14 10:06
汇编器与指令集,不同的CPU对应不同的指令集;不同的汇编器对应不同的语法和伪指令集。 每种汇编器都可以有自己的伪指令集和自己的语法,但实际上,由于事实标准的原因,(所有的CPU厂商会提供指令使用手册,手册中的指令书写样式,实际上就是事实汇编语法,何况CPU厂商肯定会提供自己的汇编器的),现代大多数的汇编器都会在主流的汇编语法Intel型和AT&T型这两类语法中选择一种作为自己的语法(Intel型可能会越来越流行)。 ARM官方提供的汇编器/指令手册中使用的是Intel型语法,GNU的汇编器gas使用的是AT&T型语法。 然而,gas for arm版的开发者,为了避免混乱,实现了完全和ARM官方汇编语法是一致的语法。也就是说,当你使用ARM指令集的指令时,按ARM官方手册的语法书写,用gas for arm编译完全没有问题。主要要注意的是伪指令集。 ARM的ADS汇编器与GCC汇编器 一:ads下的一段汇编程序: __main EXPORT BootReset BootReset B resetvec_reqset IMPORT BootEntry IMPORT |Image$$RO$$Limit| AREA BOOTROM, CODE, READONLY LDR r0, =|Image$$RO$$Limit| BEQ %1 ldr pc, [pc,#-&F20] 转换到gcc下的汇编程序为: __main .global BootReset BootReset: B resetvec_reqset .extern BootEntry .extern Image_RO_Limit # AREA BOOTROM, CODE, READONLY LDR r0, =Image_RO_Limit BEQ FUNC1 ldr pc, [pc,#-0xF20] 二:将ARM SDT下的汇编码移植到GCC for ARM编译器时,经常要做如下修改: 1、注释行以“@”或""代替“;” 2、伪操作符替换: INCLUDE 替换成 .INCLUDE TCLK2 EQU PB25 替换成 .equ TCLK2, PB25 EXPORT 替换成 .global IMPORT 替换成 .extern DCD 替换成 .long IF :DEF: 替换成 .IFDEF ELSE 替换成 .ELSE ENDIF 替换成 .ENDIF :OR: 替换成 | :SHL: 替换成 << END 替换成 .end 符号定义后加":"号 AREA Word, CODE, READONLY --> .text AREA Block, DATA, READWRITE --> .data CODE32 --> .arm CODE16 --> .thumb LTORG --> .ltorg 3、操作数及运算符号替换 ldr pc, [pc, #&18] 替换成 ldr pc, [pc, #+0x18] “&”以“+0x”号替换 三:ARM GCC汇编中常量编译控制
|
相关文章推荐
- ARM的ADS汇编器与GCC汇编器
- ARM汇编器与GCC汇编器支持的汇编语言差别
- ARM ADS集成开发环境的使用
- <2013 01 18> 从ADS到RealViewMDK —— ARM-MCU新一代集成开发环境
- 关于ARM裸机ADS中implicit
- arm 开发工具比较(ADS vs RealviewMDK vs RVDS)
- ARM汇编编程基础(四) -- ADS开发环境的使用
- arm 开发工具比较(ADS vs RealviewMDK vs RVDS)
- ADS的armcc和armlink命令简介
- ARM ADS中的AXD 调试经验集锦-zt
- SMARTARM2200 ADS工程在IAR EWARM 5.3上的移植(4)-printf的串口实现
- ARM ADS中的AXD 调试经验集锦 收藏
- ARM ADS调试设置
- ARM启动代码及ADS基本使用
- ADS ARM 汇编和GNU ARM汇编
- ARM&LINUX学习笔记(5)-----ADS建立工程
- 几种ARM反汇编器
- Windows下 基于ADS+J-Link 的ARM开发环境搭建
- VC插件,让编译器使用ADS编译成ARM指令
- ARM编译器 ADS 操作指南