[elektro] MPLAB C30 inline asm
elight
elight at ele.hu
Fri Apr 23 09:16:50 CEST 2010
Talán,
sokszor az előző sorban, vagy a környezetében!
A minap jártam ugy , hogy egy az INT rutinban elhelyezett
függvény okozott gondot.
Amit persze nem lehet az inicializáló rutinban szintén meghívni,
mert az ezáltal kettős szálon hívódna meg.. Igy utólag logikus!
És ezt mint hibaüzit, EGYENLŐRE sehol sem találom a kézikönyben.
De azért a fordító a problémakört szerencsére korrekten lekezeli,
és egy 'héber' anyázással kiszól ha kell ..
Meghatározhatatlan esetekben
végül is próbálkozni kell igy is - ugy is.
Talán, ha végre valamit is lefordít,
a miértekért megmarad az ASM-ben turkálás..
Szinte bármit is megtehetsz !!!
Ezért is nehéz és szép nyelv a C :)
Üdv István
2010.04.22. 18:51:16 dátumon hg12345 <hg12345 at freemail.hu> írta:
> 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
>
>
> -----------------------------------------
> elektro[-flame|-etc]
--
Az Opera forradalmian új levelezőjét használva: http://www.opera.com/mail/
More information about the Elektro
mailing list