Я должен спросить об этом ... Это буквально сбило меня с ума уже несколько дней. После выбора в качестве инструментальной цепочки рука-не-eabi моя жизнь стала своего рода кошмаром, и причина очень проста - arm-none-eabi - как рассматривает каждый комментарий как инструкцию, и, кроме того, иногда он просто не понимает ARM ассемблер бросали причудливые ошибки как «AREA плохая инструкция» ...arm-none-eabi-as и знак комментариев ARM ';'
Вот код, который я скопировал и вставить из Документов в Keil в:
AREA Loadcon, CODE, READONLY
ENTRY ; Mark first instruction to execute
start
BL func1 ; Branch to first subroutine
BL func2 ; Branch to second subroutine
stop
MOV r0, #0x18 ; angel_SWIreason_ReportException
LDR r1, =0x20026 ; ADP_Stopped_ApplicationExit
SVC #0x123456 ; ARM semihosting (formerly SWI)
func1
LDR r0, =42 ; => MOV R0, #42
LDR r1, =0x55555555 ; => LDR R1, [PC, #offset to
; Literal Pool 1]
LDR r2, =0xFFFFFFFF ; => MVN R2, #0
BX lr
LTORG ; Literal Pool 1 contains
; literal Ox55555555
func2
LDR r3, =0x55555555 ; => LDR R3, [PC, #offset to
; Literal Pool 1]
; LDR r4, =0x66666666 ; If this is uncommented it
; fails, because Literal Pool 2
; is out of reach
BX lr
LargeTable
SPACE 4200 ; Starting at the current location,
; clears a 4200 byte area of memory
; to zero
END ; Literal Pool 2 is empty
Мой вопрос: Какие флаги следует использовать для make arm-none-eabi - как понять свои собственные инструкции ассемблера и рассматривать комментарии как комментарии?
* ДОБАВЛЕНО: * Вот команда, я использую, чтобы скомпилировать этот код:
arm-none-eabi-gcc hello.S -Os -g -mthumb -mcpu=cortex-m3 -msoft-float -o hello.elf
Я сделал это. На самом деле компилятор теперь может понять код. Итак, теперь у меня есть только некоторые проблемы с crt0.S. В нем говорится о неопределенной переменной __end__ (что странно, я не использую какие-либо пользовательские скрипты компоновщика). – user1415536