а как использовать ассемблерную функцию в Си. Я уже несколько раз прочитал апнот, но так и не добился ничего.
файл ассемблерной функции 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
|