Datenübergabe von Assembler zu C

Gast #170665
Lesenswert?

Hallo

Ich hab ein Problem mit der Datenübergabe von Assembler zu C. Ich
möchte
aus meinem Assemblerprogramm ein Registerwert an ein C-Programm
übergeben, in C dann die Rechnung machen und danach den errechneten
Wert wieder in mein Assemblerprog. übergeben. Dieser errechnete Wert
soll dann im/über das Assemblerprog. im Display ausgegeben werden.

Hat das schon jemand gemacht ?
Kann mir BITTE jemand helfen ?!!

Im voraus DANKE !!!

Gruß
Thiemo
Gast #170666
Lesenswert?

das wird dir keiner allgemein beantworten können. Dazu musst du wissen,
wie der Compiler die Werte übergibt, das hat mit C erstmal gar nichts
zu tun und wird auch nirgends festgelegt.
Man kann in Registern, im stack oder im SRAM übergeben, sogar je nach
Anzahl der Parameter gemischt. Auch das sonstige
Programm/Compilereinstellungen/Compilerversionen haben darauf Einfluss.
Mein Rat: vergiss es, Probleme sind vorprogrammiert. Mach es aus einem
Guss - entweder durchgängig Assembler oder Hochsprache.
Gast #170667
Lesenswert?

Die übliche Vorgehensweise ist genau andersherum: Aus einem C-Programm
werden Assembler"funktionen" aufgerufen oder diese per
Inline-Assembler an kritischen Stellen direkt eingefügt.

Prinzipiell ist es natürlich auch möglich, in einem in Assembler
geschriebenen Programm C-Module zu verwenden - dann muss halt das, was
üblicherweise der C-Startup-Code macht, vom Assemblerprogramm zur
Verfügung gestellt werden und natürlich mit den vom C-Modul benötigten
Libraries gelinkt werden.

Wie das im einzelnen geht, ist in der Dokumentation des verwendeten
C/Assembler-Entwicklungssystemes beschrieben.
Gast #170668
Lesenswert?

Kann man nachlesen im AVR-libc user manual und in diversen readme files
in WinAVR (source von libc downloaden).  Da steht auch welche Register
übergeben werden.
Oder:  Einfach mal eine einfache Funktion in C schreiben.
int foo(int a, int b)
{
  return (a+b);
}
void main (main)
{
 int x;
 x = foo (5, 10);
}
Das generierte .lss oder .lst file zeigt sehr schön was wie und wo
übergeben wird.

Reiner

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