问题:如何将ARM SDT环境下的汇编代码移植到GCC编译环境中?
回答:将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
--> .fill
ldr pc, [pc, #&18] 替换成 ldr pc, [pc, # 0x18]
“&”以“ 0x”号替换
问题:请解释下面的一小段汇编语言程序:
EXPORT BootReset
BootReset
B resetvec reqset
IMPORT |Image$$RO$$Limit|
.global BootReset /* 定义全局符号 BootReset */
BootReset:
B resetvec reqset /* 跳转到resetvec */
/* 在连接定位文件中, 表示ROM区大小 */

本文详细介绍了如何将ARMSDT环境下的汇编代码成功移植到GCC编译环境中,包括注释、伪操作符、操作数及运算符号等关键部分的修改指导,以及如何解释并转换一段具体的汇编语言程序。
1万+

被折叠的 条评论
为什么被折叠?



