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-----