DEUTSCHE VERSION |
|
Links | | | Forums | | | Comments | | | Report news |
Chat | | | Polls | | | Newsticker | | | Archive |
amiga-news.de Forum > Programmierung > Shared Library für WarpOS | [ - Search - New posts - Register - Login - ] |
-1- | [ - Post reply - ] |
2004-09-28, 10:04 h gni Posts: 1106 User |
Hallo! Ich möchte ein Shared Library for WarpOS mit _VBCC_ erzeugen. AFAIK hat StormC irgendeine Ünterstützung dafür. Wie genau sieht die aus? Was wird gemacht? Sorgt StormC automatisch dafür, das man die PPC-Funktionen direkt (also ohne die 68k Gates) von einem WOS-Programm aus aufrufen kann? FWIW, es geht um eine WarpOS Version von mpega_libmad (7th release). [ - Answer - Quote - Direct link - ] |
2004-09-28, 10:26 h whose Posts: 2156 User |
Zitat: Hihi, damit hatte ich mich auch beschäftigt, war aber zu faul, das weiter zu machen (müßte noch was entrümpelt werden);) Also, bei StormC erzeugt StormLink die 68K-Stubs, also ohne Gates gehts nicht (war das jetzt Blasphemie? . Ich kann Dir ja mal meine Sourcen zuschicken, da kannst Du Dir anschauen, welche Stubs der StormLink erzeugt. Läßt mir Deine Mail-Adresse zukommen, dann schick ich Dir die Sourcen sofort. Grüße Wolfgang [ - Answer - Quote - Direct link - ] |
2004-09-28, 11:02 h gni Posts: 1106 User |
Zitat:Meine Version der Quellen ist bereits stark geändert. Eventuell könnte StormC daraus was funktionierendes bauen. Was ich verschwiegen habe ist, daß ich bereits eine funktionierende WOS Version habe... Ich bin nur nicht sicher, das die Library sich wie die vorige Version der 6th Release verhält (wenn man die Library vom PPC aus benutzt). Zitat:Welche Stubs meinst Du? Init/Open/Close/Expunge und den ROMtag? Die Stubs für die eignen Funktionen muß man ja selber machen (zumindest wird das bei mpega_libmad so gemacht). Zitat:Bietet StormC nun Unterstützung (wie auch immer das aussehen tut) um die PPC-Funktionen vom PPC aus direkt aufzurufen? Oder muß man sowas wenn man das will "selber" machen? Zitat:Per Briefsymbol im Benutzerprofil solltest Du mir eine Mail schreiben können :) [ - Answer - Quote - Direct link - ] |
2004-09-28, 11:44 h whose Posts: 2156 User |
Hast Post! Ich hoffe, das Zeugs ist lesbar angekommen. Ist der Source zur Stub bzw. dem Wrapper für WRAP_MPEGA_decode_frame(). Für den Einsprung via 68K wird ne Stub angelegt, für den Einsprung via PPC ein Wrapper. Ist ziemlich simpel gestrickt das Ganze. Grüße Wolfgang [ - Answer - Quote - Direct link - ] |
2004-09-28, 13:26 h gni Posts: 1106 User |
Zitat:Jetzt ja. Zitat:Woher weiss StormC welcher der Funktionen die öffentlichen Libraryfuntionen sind? Benutzt der Linker/IDE das .fd File? So ganz habe ich das Prinzip der Stubs noch nicht durchschaut. Wozu ist das gut im 68k Gate: static void (*PPCData__WRAP_MPEGA_decode_frame)(void) = _PPCStub__WRAP_MPEGA_decode_frame; Und dann heisst das Gate auch noch _genau_ wie die PPC-Funktion. AFAICT, benutzt die WOS Version von mpega_libmad diese Stubs _nicht_. Alle öffentlichen Funktionen haben ihr Gate in library_init.c. Wie würde man denn von PPC-Code(!) die PPC-Funktionen der Library aufrufen? [ Dieser Beitrag wurde von gni am 28.09.2004 editiert. ] [ - Answer - Quote - Direct link - ] |
2004-09-28, 13:48 h whose Posts: 2156 User |
Zitat: Pointer auf die PPCStub-Funktion Zitat: Also, die PPC-Funktion ist _PPCStub__WRAP_MPEGA_decode_frame. Genau dieser Aufruf (der vom Linker extern aufgelöst wird) wird vom 68K-Gate benutzt (siehe oben im Quelltext). Die wird auch benutzt, wenn Du das für PPC compilierst. Der Aufruf aus PPC-Code heraus lautet dann genau so, wie bisher, intern wird aber die _PPCStub_-Funktion benutzt. Daran kommst Du leider nicht vorbei, wenn Du mixed binaries erzeugst. Kompilierst Du _nur_ für PPC, benötigst Du manchmal die Gate-Funktionen für 68K, wenn der Aufruf aus 68K-Code heraus erfolgt, ansonsten nicht. Keine Wrapper oder Stubs für die PPC-Funktionen. Ich muß jetzt leider Zur Arbeit, aber ich schick Dir heut abend per Mail mal das Ganze Projekt inkl. Hauptprojekt, dann kannst Dir das genauer anschauen. Grüße Wolfgang [ - Answer - Quote - Direct link - ] |
2004-09-28, 14:26 h gni Posts: 1106 User |
Zitat:Und wozu brauch ich den? Warum kann ich _PPC_Stub nicht direkt verwenden? Zitat:Wenn immer die generierten Stubs verwendet werden, warum gibst dann in den LIB_MPEGA Funktionen RunPPC Aufrufe für WarpOS, die IMHO auch verwendet werden? Wenn die generierten Gates verwendet werden, brauchts bei den WRAP-Funktionen kein __saveds, da das schon beim _PPCStub gemacht wurde. Zitat:Ich glaube Du verstehst mich nicht. Das ganze ist eine Library und ich möchte jetzt von einem WOS-Programm die Library nutzen _ohne_ das ich durch das 68k-Gate muß. Also wie genau rufe ich jetzt von einem PPC Programm die PPC-Libraryfunktion auf? Geht das überhaupt? [ - Answer - Quote - Direct link - ] |
2004-09-28, 23:36 h whose Posts: 2156 User |
Zitat: Du kannst Dir die Gate-Funktionen auch ohne weiteres selber basteln, kannst dann aber nicht mehr ganz so einfach zwischen 68K- und PPC-Compiler wechseln. Zitat: Stimmt. Allerdings sind diese RunPPC-Aufrufe "selbstgebastelte" Gates und tun meines Wissens nicht mit dem StormC. Zitat: Hast Recht, das hatte ich wirklich nicht so aufgefaßt. Soweit ich weiß, kann man nur über die 68K-Einsprünge Funktionen einer shared library aufrufen, das bedeutet, auch aus PPC-Programmen heraus muß man über die 68K-Gates die Funktion der Library aufrufen, unabhängig davon, ob der Code der Funktion 68K oder PPC ist. Das war ja auch das große Problem, von wegen n Haufen Zeit mit den Context-Switches verplempern usw. Innerhalb der Library hingegen kannst Du ohne Umweg über Gates aus einer PPC-Funktion eine andere PPC-Funktion aufrufen. So hatte ich das verstanden. Grüße Wolfgang [ - Answer - Quote - Direct link - ] |
2004-09-29, 12:30 h gni Posts: 1106 User |
Zitat:Ich kenne StormC nicht :-) Wechseln des Compilers macht aber aber nicht an allen Stellen Sinn. Bestimmter Code muß _68k_ sein. Das war aber nicht die Frage: Mich wunderte, das die generierte Gate-Funktion eine lokale statische Variable enthält, die auf die eigentliche PPC-Funktion verweisst. Es muß einen Grund für deren Existenz geben, denn man kann die PPC-Funktion ja direkt anpsrechen.... Zitat:Das wäre ja überraschend wenn diese RunPPC-Aufrufe nicht mit StormC funktionieren würden, denn die WOS_version von mpega_libmad wurde bisher mit StormC V4 gebaut :-) StormC V4 == StormGCC, richtig? Zitat:Also braucht man bei WOS-Libraries immer separate Einsprünge in der Librarybasis für echte PPC-Funktionen, die vom PPC aus aufgerufen werden. Darum müßte man sich aber selber kümmern und Storm hilft da nicht wirklich? Eventuell hatte die WOS-Bibliothek des 6th Release ja nur ein 68k-Interface (und ich mache mir grundlos Gedanken ;-)? Zitat:Das versteht sich von selbst ;-) Mir ging es ja auch um PPC-Programme die die (PPC-) Shared-Library benutzen. [ - Answer - Quote - Direct link - ] |
2004-09-29, 13:08 h whose Posts: 2156 User |
Zitat: Die lokale Variable innerhalb der Gate-Funktion ist nur für die Gate-Funktion selbst interessant. Da werden die Funktionsparameter umhergeschoben und die PPC-Wrapper-Funktion auferufen, mehr passiert da nicht. Ist ähnlich wie die Gates, die Du schon im Source der MPEGALibmad drinhast. Zitat:Zitat:Das wäre ja überraschend wenn diese RunPPC-Aufrufe nicht mit StormC funktionieren würden, denn die WOS_version von mpega_libmad wurde bisher mit StormC V4 gebaut :-) StormC V4 == StormGCC, richtig? Das habe ich auch gelesen Allerdings compiliert die nicht auf dem StormC4, habe ich bereits probiert. Sieht mir auch mehr so aus, als hätte man da versucht, PUP und WOS zu mischen. Keine Ahnung, was der vorherige Maintainer da für Tricks benutzt hat, damit das lief. Bei mir tuts das jedenfalls nicht, daher hab ich damit begonnen, mit der herkömmlichen Methode zu arbeiten. Und die compiliert wenigstens Zitat: Das verstehe ich jetzt wieder nicht so ganz. Eine echte "WOS-Library" im Sinne einer shared library gibts ja nicht. Es gibt nur shared libraries in Form eines mixed oder fat binary, wo eben neben 68K-Funktionen auch PPC-Funktionen enthalten sind, die man _nur_ über die 68K-Gates erreichen kann, auch von PPC-Programmen aus. Im Grunde das Gleiche wie bei PUP. Zumindest sehe ich bei dem, was ich über AOS shared libraries weiß auch keine andere Möglichkeit, in die Lib Funktionen direkt von einem PPC-Programm aus einzuspringen. Außer, man bastelt sich selbst ein "WOS shared library Framework". Meinst Du das? Wär des einfacher gewesen, hätten wir das Heckmeck mit den Context Switches wohl nie gehabt *seufz* Zitat: Das wiederum hab ich nu verstanden Grüße [ - Answer - Quote - Direct link - ] |
2004-09-29, 14:47 h gni Posts: 1106 User |
Zitat:Wofür brauche ich die nun? :-) Zitat:Du meinst Du kannst nicht linken, oder? Mit BUILD_WARPUP sollte sich library_init.c mit dem 68k(!) Compiler übersetzen lassen. Und wir reden über StormGCC, right?Zitat:Das habe ich auch gelesen ;) Allerdings compiliert die nicht auf dem StormC4, habe ich bereits probiert. Zitat:Nein, das täuscht. Das ganze sieht deshalb so chaotisch aus, weil es soviele BUILD_ Tests in library_init.c gibt. Zitat:Aber läuft bei Dir totzdem nicht ;-) Bei mir funktioniert es mit eigenen RunPPC-Calls. Zitat:Doch gibt es ;) (Auch) bei PowerUp ist es möglich die PPC-Libraryfunktionen direkt vom PPC-Programm aufzurufen. Allerdings ist das ganze nicht SetFunction kompatibel.Zitat:Das verstehe ich jetzt wieder nicht so ganz. Eine echte "WOS-Library" im Sinne einer shared library gibts ja nicht. Zitat:Ist für Dich auch ein Mixed-Binary eine Library, bei der die 68k Funktionen nur an den PPC weiterreichen (sprich ohne PPC gehts nicht)? Zitat:Man kann nicht relativ zur Basis einspringen, aber man kann sich ja die Zieladresse aus dem jmp in der Basis holen und dann den Aufruf per Funktionszeiger machen. Zitat:Was soll das sein? Zitat:Die kann man nicht vermeiden, wenn man 68k Libraries verwendet (und die meisten Libraries sind ja 68k) Zitat:Gut! :-)Zitat:Das wiederum hab ich nu verstanden ;) [ Dieser Beitrag wurde von gni am 29.09.2004 editiert. ] [ - Answer - Quote - Direct link - ] |
-1- | [ - Post reply - ] |
amiga-news.de Forum > Programmierung > Shared Library für WarpOS | [ - Search - New posts - Register - Login - ] |
Masthead |
Privacy policy |
Netiquette |
Advertising |
Contact
Copyright © 1998-2024 by amiga-news.de - all rights reserved. |