реклама на сайте
подробности

 
 
> Поддерживатся ли в Coocox *.S ассемблерные файлы?
flopix
сообщение Jul 30 2013, 20:15
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 105
Регистрация: 21-06-12
Пользователь №: 72 429



Пишу проект в 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 - Jul 30 2013, 20:49
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 4)
flopix
сообщение Jul 31 2013, 04:31
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 105
Регистрация: 21-06-12
Пользователь №: 72 429



Начал пытаться переделать макроопределения. Вот что получается, закомментировано в /* */ вариант макрокоманд для 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 ?

Сообщение отредактировал IgorKossak - Aug 1 2013, 06:32
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!!!
Go to the top of the page
 
+Quote Post
KRS
сообщение Jul 31 2013, 05:40
Сообщение #3


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



Цитата(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
Go to the top of the page
 
+Quote Post
flopix
сообщение Jul 31 2013, 07:18
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 105
Регистрация: 21-06-12
Пользователь №: 72 429



Начиная со второй строки идут 3 команды

THUMB
REQUIRE8
PRESERVE8

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

THUMB - это и есть тут переключение режима?

Сообщение отредактировал flopix - Jul 31 2013, 07:22
Go to the top of the page
 
+Quote Post
flopix
сообщение Jul 31 2013, 08:43
Сообщение #5


Частый гость
**

Группа: Участник
Сообщений: 105
Регистрация: 21-06-12
Пользователь №: 72 429



Вопрос снят. Взял готовые файлы с другого проекта http://www.stm32circle.com/projects/project.php?id=82
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 19:19
Рейтинг@Mail.ru


Страница сгенерированна за 0.01405 секунд с 7
ELECTRONIX ©2004-2016