Hallo Wie kann ich aus einer Assemblerdatei (my.s) eine C-Funktion in meiner C-Datei (my.c) aufrufen? Umgekehrt ist es ja kein Problem, ich definiere sie im C-File als 'extern', implementiere die Funktion im *.s-Assembler-File und kann sie dann im C-File wie eine ganz normale Funktion aufrufen. Gruss Michael
Mit CALL oder RCALL, wie sonst? Die Argumente musst du natürlich selbst zusammenpusseln. Falls du über AVR-GCC sprichst, steht die ABI-Beschreibung in der (avr-libc-)FAQ.
Hallo > Mit CALL oder RCALL, wie sonst? Die Argumente musst du natürlich > selbst zusammenpusseln. Falls du über AVR-GCC sprichst, steht die > ABI-Beschreibung in der (avr-libc-)FAQ. Logisch mit CALL oder RCALL ;-) Argumente ist auch kein Problem. Mein Problem: Woher bekomme ich die Sprungadresse? Im C-Disassembly könnte ich natürlich die Adresse meiner C-Funktion heraussuchen und dann direkt ins Assembler-File kopieren, aber das ist wohl weniger die Idee ;-) Übrigens: Ja, geht um AVR-GCC. Ich schaue mir jetzt mal die ABI-Beschreibung an. Gruss Michael
> Übrigens: Ja, geht um AVR-GCC. Ich schaue mir jetzt mal die > ABI-Beschreibung an. Und ähm...wo finde ich die? Bin seit einer Viertelstunde am googeln, aber ich finde nix.
> Woher bekomme ich die Sprungadresse? Symbolisch, so wie der Compiler auch: du schreibst einfach den Namen der Funktion als Ziel hin. Der Linker kümmert sich dann drum. Das ging schon vor 20 Jahren unter CP/M. ;-) > Und ähm...wo finde ich die? http://www.nongnu.org/avr-libc/user-manual/FAQ.html#faq_reg_usage
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.