Сб июл 06, 2013 13:23:38
NAME main
NEXT MACRO
LDRH R1,[R0,#2]
LDR PC,[R8,R1,LSL #2]
ENDM
COMPILE MACRO
IF _args == 1
DC16 \1
ENDIF
IF _args == 2
DC16 =\1
DC32 =\1
ENDIF
ENDM
PUBLIC __iar_program_start
SECTION .intvec : CODE (1)
THUMB
SECTION ThreadedCode : DATA (1)
DC16 123
;MACRO LIT 1
;MACRO LIT 2
__iar_program_start
B main
SECTION WORDS : CODE (1)
THUMB
;NEXT LDRH R1,[R0,#2]
; LDR PC,[R8,R1,LSL #2]
ENTER push {R0}
ADD R0,R8,R1,LSL #2
LDRH R1,[R0,#4]
LDR PC,[R8,R1,LSL #2]
EXIT pop {R0}
NEXT
PLUS LDMIA R2!,{R4,R5}
ADD R4,R5,R4
STMDB R2!,{R4}
NEXT
LIT ADD R1,R1,#1
LDR R1,[R8,R1,LSL #2]
STMDB R2!,{R4}
NEXT
;LDRH R1,[R0],#2
;LDR PC,[R8,R1,LSL #2]
SECTION .text : CODE (1)
THUMB
main NOP
ADD R1,R2,R3
B main
END
Сб июл 06, 2013 14:39:23
Вс июл 07, 2013 09:09:30
Если для IAR AVR есть "Mixing C and assembler" то для ARM такого я не видел.
Типовой ответ - смотрите сгенерированый код и делайте аналогично.
поискать/почитать документацию по формированию скрипта для линкера
Так как не вся программа может находиться во флеш, часть кода может быть перемещена в оперативную память для ускорения работи.
Кроме того если вы объявляете инициализированные переменные их вы сами должны инициализировать. При программировании на С IAR самостоятельно формирует секцию которая инициализирует данные и обнуляет неинициализированные.
Вс июл 07, 2013 11:55:51
Вс июл 07, 2013 12:52:54
Вс июл 07, 2013 23:22:34
Пн июл 08, 2013 08:37:05
Пн июл 08, 2013 12:43:56
Пн июл 08, 2013 15:55:03