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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Умножение 2байтовых чисел, как лучше воспользоваться аппаратным умножителем?
skopus
сообщение Dec 12 2005, 09:08
Сообщение #16


Участник
*

Группа: Свой
Сообщений: 65
Регистрация: 31-08-05
Из: Moscow
Пользователь №: 8 124



а как использовать ассемблерную функцию в Си. Я уже несколько раз прочитал апнот, но так и не добился ничего.

файл ассемблерной функции fmuls16x16_32.s90 выглядит так:

#include <iom128.h>

NAME fmuls16x16_32
PUBLIC fmuls16x16_32

RSEG CODE
fmuls16x16_32:
movw r17:r16, r23:r22 ;перенести из R16,R17
clr r2
fmuls r23, r21 ; ( (signed)ah * (signed)bh ) << 1
movw r19:r18, r1:r0
fmul r22, r20 ; ( al * bl ) << 1
adc r18, r2
movw r17:r16, r1:r0
fmulsu r23, r20 ; ( (signed)ah * bl ) << 1
sbc r19, r2
add r17, r0
adc r18, r1
adc r19, r2
fmulsu r21, r22 ; ( (signed)bh * al ) << 1
sbc r19, r2
add r17, r0
adc r18, r1
adc r19, r2
ret
END

в основном файле программы я объявляю ее как

extern long fmuls16x16_32(int A, int С);


А в ответ получаю ошибку от компилятора:

Error[e46]: Undefined external "fmuls16x16_32(int, int)" referred in usercode ( C:\IAR C\projects\Debug\Obj\usercode.r90 )

Сообщение отредактировал skopus - Dec 12 2005, 09:10
Go to the top of the page
 
+Quote Post
m16
сообщение Dec 12 2005, 09:37
Сообщение #17


Местный
***

Группа: Свой
Сообщений: 242
Регистрация: 27-01-05
Пользователь №: 2 225



skopus
Зачем это нужно? ИАР использует аппаратный умножитель при генерации кода
Go to the top of the page
 
+Quote Post
skopus
сообщение Dec 12 2005, 09:48
Сообщение #18


Участник
*

Группа: Свой
Сообщений: 65
Регистрация: 31-08-05
Из: Moscow
Пользователь №: 8 124



результат его умножения я вообще не могу интерпретировать. Уж лучше на асме. по крайней мере так мне понятно, что происходит.

А проблема решилась объявлением

extern "C"
{
long fmuls16x16_32(int A, int С);
}
Go to the top of the page
 
+Quote Post

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

 


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


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