[elektro] MPLAB C30 inline asm

hg12345 hg12345 at freemail.hu
Thu Apr 22 18:51:16 CEST 2010


Hi!

Néha már azt hiszem értem a MPLAB C30  (alias GCC 4.xx) inline asm :-(
De tévedtem :-(

Két problémám van, szeretnék egy asm fuggvényt C betétként megírni.

A függvényt megírtam, az csinálja mit szeretnék, de !

1, ha használnám a regiszter változókat amit a bemenetnek definiáltam 

ExtMath.c.s:57: Error: bad expression
ExtMath.c.s:57: Warning: Missing , assumed.
ExtMath.c.s:57: Error: Too many operands ('mov.d %1,w4').

üzeneteket kapom.   %1 -> "r"(T21) ahol

register long T21 asm("w0"); van definiálva.

a "mov.d w0,w4" simán lefordul.

2, amikor simán lefordul és az optimalizálást is bekapcsolom akkor egyetlen utasítás sor se tetszik neki:

ExtMath.c.p: line 0055: PA-E0013 Error: Unrecognized instruction mnemonic
ExtMath.c.p: line 0055: PA-E0028 Error: Expected a machine or assembler instruction

Ami a legszebb, hogy az 55 sorban:

	mov.d	w0,w4				
mov.d	w2,w6				
mul.uu	w4,w6,w0

a helyes kód van.

 Hol lehet a hiba?

üdv




More information about the Elektro mailing list