組み込み ARM デバイス用のプログラムをコンパイルしており、あるブートローダーから別のブートローダーに切り替えたいと考えています。どちらのブートローダも (同じタイプのデバイス用に) アセンブラで記述されていますが、問題はそれらが異なる方言/フレーバーであることです (おそらく Intel と 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
オペランドの順序とコメント スタイルが異なることに注意してください。この 2 番目のブロックはどのタイプのアセンブラですか? この形式を期待して解析するようにgccに指示できますか?