amiga-news 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:
Original von chkamiga:
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


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. :D :D :D )
--
http://www.alternativercomputerclub.de.vu

[ - Answer - Quote - Direct link - ]

2004-02-12, 13:51 h

tokai
Posts: 1071
User
Zitat:
Original von Inferno:
Da tokai der erste war, erhält er die DVD! (Sorry, hab nur eine ..)


8o

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