C und Assembler Code IAR Kickstart

Gast #17725
Lesenswert?

Mußt du Parameter übergeben? Liefert das UP Werte zurück? Dann mußt du 
wissen, wie der Compiler dieses tut und du mußt dich mit deinem 
ASM-Programm daran halten.
Prinzipiell geht es so:

void asm_test (){
#asm
  nop
  nop
  nop
#endasm
}
Wie gesagt, daß ist der einfache Fall, keine Werte von und an die 
Funktion. Höllisch aufpassen mußt du, welche Register du benutzen 
darfst, weißt du es nicht, benutzte Register sichern/wiederherstellen.
Bei CodeVision kann man sich recht einfach Register für ASM freihalten.
globale Variable:
unsigned char dummy1 @14
unsigned char dummy2 @15

R14 und 15 werden dann nicht vom Compiler benutzt, gibt zwar ne Warnung, 
daß die Variablen deklariert, aber nicht benutzt werden. Aber da kann 
man großzügig drüber weg sehen.
Und als letztes: Warum willst du Assemblerroutinen einfügen? Was 
versprichst du dir davon? Ich benötige das wirklich nur ganz selten, die 
Wartbarkeit leidet auf jeden Fall darunter.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren