Forum: Mikrocontroller und Digitale Elektronik C und Assembler Code IAR Kickstart


von schicki (Gast)


Lesenswert?

Ich möchte vom C-Code ein Assembler Unterprogramm aufrufen. Habe dabei 
große Probleme hat jemand einen Tip für mich?
Beim aufruf in C-Spy steht kein Code in meiner Assembler Routine.

Danke Schicki

von crazy horse (Gast)


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.

von schicki (Gast)


Lesenswert?

Dem ASM Programm werden ein pointer und eine integer Variable übergeben. 
Die Variablen stehen in R14,R12. Habe große problem beim Debuggen da der 
ASSembler code nicht compeliert wird.
example

00fe      ?????
0100      ?????
...
...

Der ASM Code ist Harwarenahe und wurde von jemand anderen geschrieben.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.