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
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.
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.