Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Поддерживатся ли в Coocox *.S ассемблерные файлы?
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
flopix
Пишу проект в CooCox.

При добавлении mp3 библиотеки Helix выяснилась неприятность - Coocox не понимает синтаксис ассемблерных *.S файлов.

Цитата
C:\CooCox\CoIDE\workspace\FlashTest-Coocox-USB-LFN-Rus-PID_VID_RTOS\helix\real\arm\asmpoly_thumb2.S: Assembler messages:
[cc] C:\CooCox\CoIDE\workspace\FlashTest-Coocox-USB-LFN-Rus-PID_VID_RTOS\helix\real\arm\asmpoly_thumb2.S:1: Error: bad instruction `area |.text|,CODE,READONLY,ALIGN=2'
[cc] C:\CooCox\CoIDE\workspace\FlashTest-Coocox-USB-LFN-Rus-PID_VID_RTOS\helix\real\arm\asmpoly_thumb2.S:2: Error: bad instruction `thumb'
[cc] C:\CooCox\CoIDE\workspace\FlashTest-Coocox-USB-LFN-Rus-PID_VID_RTOS\helix\real\arm\asmpoly_thumb2.S:3: Error: bad instruction `require8'
[cc] C:\CooCox\CoIDE\workspace\FlashTest-Coocox-USB-LFN-Rus-PID_VID_RTOS\helix\real\arm\asmpoly_thumb2.S:4: Error: bad instruction `preserve8'
[cc] C:\CooCox\CoIDE\workspace\FlashTest-Coocox-USB-LFN-Rus-PID_VID_RTOS\helix\real\arm\asmpoly_thumb2.S:6: Error: bad instruction `pcm RN r0'
[cc] C:\CooCox\CoIDE\workspace\FlashTest-Coocox-USB-LFN-Rus-PID_VID_RTOS\helix\real\arm\asmpoly_thumb2.S:7: Error: bad instruction `vb1 RN r1'
[cc] C:\CooCox\CoIDE\workspace\FlashTest-Coocox-USB-LFN-Rus-PID_VID_RTOS\helix\real\arm\asmpoly_thumb2.S:8: Error: bad instruction `coef RN r2'
[cc] C:\CooCox\CoIDE\workspace\FlashTest-Coocox-USB-LFN-Rus-PID_VID_RTOS\helix\real\arm\asmpoly_thumb2.S:10: Error: bad instruction `vlo RN r0'
[cc] C:\CooCox\CoIDE\workspace\FlashTest-Coocox-USB-LFN-Rus-PID_VID_RTOS\helix\real\arm\asmpoly_thumb2.S:11: Error: bad instruction `vhi RN r3'
[cc] C:\CooCox\CoIDE\workspace\FlashTest-Coocox-USB-LFN-Rus-PID_VID_RTOS\helix\real\arm\asmpoly_thumb2.S:13: Error: bad instruction `sum1ll RN r4'
[cc] C:\CooCox\CoIDE\workspace\FlashTest-Coocox-USB-LFN-Rus-PID_VID_RTOS\helix\real\arm\asmpoly_thumb2.S:14: Error: bad instruction `sum1lh RN r5'
......


Точнее я сказал бы сами файлы понимает, но затыкается на инструкицях экспорта и т.п. *.S файлы шли для Keil. Где бы почитать как корректно заменить на инструкции которые поддерживает gcc assembler?
flopix
Начал пытаться переделать макроопределения. Вот что получается, закомментировано в /* */ вариант макрокоманд для Keil. Прошу подсказать если неверно.

CODE
/*; AREA |.text|, CODE, READONLY*/
.section ".text"
/*THUMB*/
/*REQUIRE8*/
/*PRESERVE8*/
/*EXPORT xmp3_MULSHIFT32*/
.globl xmp3_MULSHIFT32

/*EXPORT xmp3_FASTABS*/
.globl xmp3_FASTABS

/*xmp3_MULSHIFT32 PROC*/
.type xmp3_MULSHIFT32, %function
xmp3_MULSHIFT32:
.fnstart
smull r2, r0, r1, r0
BX lr
/*ENDP*/
.fnend

/*xmp3_FASTABS PROC*/
.type xmp3_FASTABS, %function
xmp3_FASTABS:
.fnstart
mov r1, r0
mov r0, #0x0
eor r0, r1, r1, asr # 31
sub r0, r0, r1, asr # 31
bx lr
/*ENDP*/
.fnend

/*END*/
.end


Остановился на инструкции sub r0, r0, r1, asr # 31

Компидятор ругается: ../asmmisc.S:74: Error: unshifted register required -- `eor r0,r1,r1,asr#31'

Что значит запись asr#31 ?
KRS
Цитата(flopix @ Jul 31 2013, 08:31) *
Остановился на инструкции sub r0, r0, r1, asr # 31

Компидятор ругается: ../asmmisc.S:74: Error: unshifted register required -- `eor r0,r1,r1,asr#31'

Что значит запись asr#31 ?

арифметический сдвиг вправо на 31, фактически клонирование старшего бита во все остальные.
инструкция корректная для ARM или THUMB2 режима. для THUMB как раз и будет ошибка!
Какой у вас режим?

да и кстати в xmp3_FASTABS
лишняя инструкция
mov r0, #0x0
flopix
Начиная со второй строки идут 3 команды

THUMB
REQUIRE8
PRESERVE8

Пока не разобрался как они должны выглядеть для asm gcc

THUMB - это и есть тут переключение режима?
flopix
Вопрос снят. Взял готовые файлы с другого проекта http://www.stm32circle.com/projects/project.php?id=82
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.