DEUTSCHE VERSION |
|
Links | | | Forums | | | Comments | | | Report news |
Chat | | | Polls | | | Newsticker | | | Archive |
amiga-news.de Forum > Programmierung > 68040 Code-Cache leeren | [ - Search - New posts - Register - Login - ] |
-1- | [ - Post reply - ] |
2004-02-07, 20:06 h Inferno Posts: 157 User |
Hallo Leute, heute mal 'ne ganz abwegige Frage, aber erst eine Kurzbeschreibung was ich machen möchte (in Strom C / gcc) Eine Funktion "erstellt" eine andere Funktion in einem array ---snip--- void (*funcName)(); // irgendwo definiert void createMethod() { char *buffer = new char[1024]; for(int i=0; i<1024; i++) buffer[ i ] = irgendwas(i); funcName = ((void)(*)()) buffer; // so ähnlich, habs gerade nicht offen } ---/snip--- Die "irgendwas(i)" - Funktion liefert den M68K - Maschinencode für eine Funktion zurück, die irgendwas macht... (unterschiedlich, je nach Aufgabenstellung - soll ein JIT-Compiler werden, und alles ist hier sehr vereinfacht dargestellt) zu einem späteren Zeitpunkt wird dann die "funcName()" Prozedur aufgerufen. Nun das Problem: Das funktioniert wunderbar in emulierten Umgebungen (WinUAE, MorphOS - Emulation, MacUAE), nicht aber auf "echten" 68040ern (möglicherweise/wahrscheinlich auch nicht auf anderen Prozessoren der M68K Serie) Nachdem ich ewigkeiten im dunkeln gestochert habe, kam ich auf die Idee, daß es evtl. mit dem Code-Cache des Prozessors zu tun hat?!?! Diesen müsste man demnach nach Beendigung der for-Schleife einmal als "invalid" markieren, damit er die richtige Funktion nachlesen kann. Kann ich das von C aus machen, und wenn ja, wie??? Vielleicht hat ja jemand noch eine andere Idee, warum es fehlschlagen könnte (wie gesagt, ich stochere im dunkeln)! Gruß, Inf. PS: Für sachdienliche Hinweise, die zur Lösung dieses Problems führen, setze ich hiermit eine Lara Croft/Tomb Raider I DVD aus. Ausserdem wird der/diejenige in den Credits erwähnt [ Dieser Beitrag wurde von Inferno am 07.02.2004 editiert. ] [ - Answer - Quote - Direct link - ] |
2004-02-07, 20:36 h tokai Posts: 1071 User |
Vielleicht helfen dir die Cache#? funktionen der exec.library weiter. Also CacheClearE(), CacheClearU() etc. regards, tokai -- http://www.christianrosentreter.com IRC: #amiganews.de @ARCNET (e.g. de3.arcnet.vapor.com/ port 6667) [ Dieser Beitrag wurde von tokai am 07.02.2004 editiert. ] [ - Answer - Quote - Direct link - ] |
2004-02-07, 22:27 h chkamiga Posts: [Former member] |
Kann gut sein das unter einem Emulator der Cache nicht wirklich emuliert wird. Unter Basic nimmt man dazu CacheClearE sieht ungefähr so aus: Rem Funktion vspfPCP& = &h16c04e75 ' move.b d0,(a3)+; rts ' CacheClearE is >= V37 only, without the flush this code will ' certainly not work on a 68040 (but does 1.3 work on an '040?) CacheClearE VARPTR(vspfPCP&), 4, CACRF_ClearI& OR CACRF_ClearD& -- http://people.freenet.de/CHRAmiga.de CHRKUM@web.de [ - Edit - Answer - Quote - Direct link - ] |
2004-02-08, 14:54 h Inferno Posts: 157 User |
Hallo Leute, vielen Dank!! Das wars was ich gesucht (aber irgendwie wohl nicht selber gefunden) hatte! Da tokai der erste war, erhält er die DVD! (Sorry, hab nur eine ..) Gruß, Peter [ - Answer - Quote - Direct link - ] |
2004-02-08, 18:08 h chkamiga Posts: [Former member] |
Also mir kommts darauf an zu helfen, nicht darauf was zu gewinnen... -- http://people.freenet.de/CHRAmiga.de CHRKUM@web.de [ - Edit - Answer - Quote - Direct link - ] |
2004-02-08, 18:19 h Inferno Posts: 157 User |
Hallo chk, auf jeden Fall auch Dir vielen Dank! Ich war nur so verzweifelt, da dieses Problem mein Projekt seit fast einem Jahr begleitet hat, daß ich gedacht habe, vielleicht hilft ein kleiner Anreiz aus (in früheren Mails zu diesem Problem habe ich nämlich keine Antwort bekommen - nicht hier auf dieser Webseite, sondern auf der Projekt-Mailing-Liste). Gruß, Inf. [ - Answer - Quote - Direct link - ] |
2004-02-08, 18:25 h chkamiga Posts: [Former member] |
Na dann hast du an der Falschen stelle gefragt. Hier bekommt man meistens eine Antwort auf seine Fragen. Ist cool hier. -- http://people.freenet.de/CHRAmiga.de CHRKUM@web.de [ - Edit - Answer - Quote - Direct link - ] |
2004-02-10, 13:09 h Ralf27 Posts: 2779 User |
Zitat: Jo, das muß ich hier auch mal tippen! Hier fühlt man noch ein gewissen Amigafeeling. Liegt wohl auch daran das hier wohl anscheinend keine Trolle sind. (Trolle und programmieren beißt sich wohl. ) -- http://www.alternativercomputerclub.de.vu [ - Answer - Quote - Direct link - ] |
2004-02-12, 13:51 h tokai Posts: 1071 User |
Zitat: Vielen Dank! regards, tokai [ - Answer - Quote - Direct link - ] |
-1- | [ - Post reply - ] |
amiga-news.de Forum > Programmierung > 68040 Code-Cache leeren | [ - Search - New posts - Register - Login - ] |
Masthead |
Privacy policy |
Netiquette |
Advertising |
Contact
Copyright © 1998-2024 by amiga-news.de - all rights reserved. |