Re: OT: Microcontroller gesucht
Daniel Voges <[email protected]> Wed, 30 Nov 2005 20:30:30 +0100
| Newsgroups | gmane.linux.mandrake.newbie.german |
|---|---|
| Message-ID | <[email protected]> |
On Wed, 30 Nov 2005 19:54:56 +0100 Christoph Fauck <[email protected]> wrote: > Die Umgebung liefert ein ELF-Binary, in welchem sich am Anfang Assembler-Code > befindet, welcher einige Initialisierungen vornimmt und dann die > main()-Funktion aufruft. Der Assembler-Code befindet sich in separaten > Dateien, wird aber von der Umgebung automatisch mit einkompiliert. > > Weißt du, wie so etwas dem gcc geht? > Wenn das ASM-Funktionen sind kann man die einfach als solche in einem C- Programm aufrufen. So weit ich weiß muss im Assembler public _proc stehen, um die Funktion dem Linker bekannt zu machen. Ich versuchs mal mit einem kleinen Beispiel (Ist DOS-Assembler :-] ): MODEL SMALL ;gleiches Modell wie in C! CODESEG PUBLIC _max ;_max für Linker bekannt machen a = BP+4 ;Def. der Adressen von a b = BP+6 ;und b _max: PUSH BP MOV BP,SP MOV AX,[a] CMP AX,[b] JG agr ;a ist größer MOV AX,[b] agr: POP BP RET END _max ist eine Funktion vom Typ int, was in AX steht ist dann der Rückgabewert. In C sieht das dann so aus: extern "C" int max (int a, int b); int main() { int x = max(5,3); return 0; } Der Assemblercode müßte also irgendwie als Startup-Code implementiert werden... wahrscheinlich eine Funktion, die als erstes in main ausgeführt wird... Hoffe es hilft weiter :-/ Daniel -- Oelder Linuxuser Group http://www.linuxuser-oelde.de euIRCnet #oelig
signature.asc
(application/pgp-signature, 189 B)
-----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.0 (GNU/Linux) iD8DBQFDjf3cwhI0nqxQUUYRAv2TAJ4u5jROAUFdAoUAPyOMdGQ1QqvsBACgp81H 1EZVMpJE0EP5n5kDYUmQ63o= =f14X -----END PGP SIGNATURE-----