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.
Gast #17726
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.

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