我正在为嵌入式 ARM 设备编译程序,并希望从一个引导加载程序切换到另一个引导加载程序。两个引导加载程序都是用汇编程序编写的(用于相同类型的设备),但问题是它们是不同的方言/风格(也许是英特尔与 AT&T?)。现有的汇编代码在 gcc 中可以愉快地编译,但我想使用的却没有。
例如,现有(工作)代码如下所示......
/* Comments are c-style */
.syntax unified
.arch armv7-m
.section .stack
.align 3
#ifdef __STACK_SIZE
.equ Stack_Size, __STACK_SIZE
#else
.equ Stack_Size, 0xc00
#endif
.globl __StackTop
.globl __StackLimit
__StackLimit:
.space Stack_Size
.size __StackLimit, . - __StackLimit
__StackTop:
.size __StackTop, . - __StackTop
...我想使用的代码看起来像这样...
; comments are lisp-style
Stack_Size EQU 0x00000400
AREA STACK, NOINIT, READWRITE, ALIGN=3
Stack_Mem SPACE Stack_Size
__initial_sp
; <h> Heap Configuration
; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
; </h>
Heap_Size EQU 0x00000200
AREA HEAP, NOINIT, READWRITE, ALIGN=3
__heap_base
Heap_Mem SPACE Heap_Size
__heap_limit
PRESERVE8
THUMB
注意操作数的顺序,注释风格不同。第二个块是什么类型的汇编程序?可以告诉 gcc 期待这种格式并解析它吗?