FB18 - Das Forum für Informatik

fb18.de / Diplom Informatik / Unterbereich Grundstudium / Technische Informatik

T3 - Übergabe von Strukturen?

T3 - Übergabe von Strukturen? 2004-12-07 07:09
Anonymer User
Kannn vielleicht jemand kurz zusammenfassen, wie die Übergabe von Strukturen von C an ASM (und umgekehrt) funktioniert bzw. sagen, wo ich das nachlesen kann?

Danke!

Re: T3 - Übergabe von Strukturen? 2004-12-07 15:52
Fred
Kannn vielleicht jemand kurz zusammenfassen, wie die Übergabe von Strukturen von C an ASM (und umgekehrt) funktioniert bzw. sagen, wo ich das nachlesen kann?
In Assembler erhältst Du in %i0 einen Zeiger auf die übergebene Struktur. Du musst also wissen, wie diese Struktur aufgebaut ist, um die ld-Befehle sinnvoll anzuwenden. Hier ein Beispiel:

typedef struct { int i; char c[4]; } bsp; void beispiel(bsp foo); beispiel: ld [%i0], %l0 ! %l0 = foo.i ld [%i0+4], %l1 ! %l1 = foo.c[0] ld [%i0+5], %l2 ! %l2 = foo.c[1] ld [%i0+6], %l3 ! %l3 = foo.c[2] ld [%i0+7], %l4 ! %l4 = foo.c[3]

Re: T3 - Übergabe von Strukturen? 2004-12-07 16:02
TriPhoenix
Die Rückgabe ist da sogar noch etwas ekliger. Les am besten so nach:

schrieb ein Minimales C-Programm was eine Struktur bekommt und eine Struktur zurückgibt und schau dann nach was es macht. Reduzier die Struktur auf zwei Integer z.B. dann wird das Beispiel hinreichend einfach

Re: T3 - Übergabe von Strukturen? 2004-12-07 16:08
Fred
Die Rückgabe ist da sogar noch etwas ekliger.
Über die wollte der Anonyme zum Glück nichts wissen…

Wird eigentlich wirklich ein Zeiger auf die Originalstruktur übergeben oder auf eine Kopie?

Re: T3 - Übergabe von Strukturen? 2004-12-07 16:13
TriPhoenix
Die Rückgabe ist da sogar noch etwas ekliger.
Über die wollte der Anonyme zum Glück nichts wissen…
Da steht Übergabe, eien Rückgabe ist für mich auch eine Übergabe [img]http://www.fb18.de/gfx/15.gif[/img]

Wird eigentlich wirklich ein Zeiger auf die Originalstruktur übergeben oder auf eine Kopie?
Zumindest unoptimierend eine Kopie, sonst würde die dazugehörige Semantik (ändern in der Unterfunktion hat keine Wirkung auf die Originalparameter) sonst kaputtgehen.