DEUTSCHE VERSION |
|
Links | | | Forums | | | Comments | | | Report news |
Chat | | | Polls | | | Newsticker | | | Archive |
amiga-news.de Forum > Programmierung > StormC/Miami/Farcode/Nearcode... | [ - Search - New posts - Register - Login - ] |
-1- | [ - Post reply - ] |
2003-05-18, 20:57 h THDany Posts: 38 User |
Mahlzeit! Ich hab ein Problem mit dem ich nicht klar komme. Ich versuche gerade in mein TH-Verbindung eine Traffic-Kontrolle mittels MiamiPFAddHook(); einzubauen. Der Hacken kommt jetzt wenn ich proto/miami.h einbaue. Denn ab dem Moment stürt mein Programm sofort ab wenn ich es starte. Stelle ich den Compiler jedoch auf Nearcode um funktioniert miami.h, spricht das Programm stürzt nicht ab, aber dafür funktionieren meine bislang anstandslos lauffähigen Funktionen nicht mehr. Meine Frage ist nun was ist denn der Unterschied zu diesem Far- und Nearcode? Was kann ich machen damit das Programm läuft? Hoffe auf Hilfe. Dany [ - Answer - Quote - Direct link - ] |
2003-05-19, 10:22 h Solar Posts: 3680 User |
ACHTUNG - das folgende ist allgemein (statt Amiga-spezifisch) und stark vereinfacht dargestellt! Es geht um die Größe des Offset bei Codeverzweigungen. Wird z.B. eine Funktion angesprungen, ist dies auf Maschinensprache-Ebene ein Sprung an eine andere Speicheradresse. Bei "Nearcode" (nahem Code) wird nun ein "kleiner" Offset genommen, sagen wir einmal 16 bit. Das reicht, um 32kByte nach "vorn" oder 32kByte nach "hinten" zu springen. Wird das Executable / die Library größer als 64kByte, dann wird's schwierig. Bei "Farcode" wird nun ein "größerer" Offset verwendet, i.d.R. sogar eine absolute Adresse statt des Offset. Damit ist jeder Code im Speicher ansprechbar; allerdings kostet "Farcode" Speicher und Taktzyklen. Die "Problemchen" beim verlinken von Near- und Farcode-Objektdateien kannst Du Dir dann selbst ausmalen. ;-) [ - Answer - Quote - Direct link - ] |
2003-05-19, 10:46 h thomas Posts: 7718 User |
Beim Amiga ist das so realisiert, daß beim Farcode ("großes Datenmodell") absolute Adressen benutzt werden. move $12345,d0 jmp $23456 Beim Nearcode ("kleines Datenmodell") werden Datenzugriffe relativ zu einem Addressregister und Spünge pc-relativ durchgeführt. move 654(a4),d0 jmp -372(pc) Letzteres gibt Probleme bei Funktionen, die in anderen Tasks ausgeführt werden (z.B. Hooks), da dort das Basisregister (A4) nicht gesetzt ist. Dies kann man normalerweise dadurch umgehen, daß man die Funktion mit __saveds deklariert (siehe Anleitung des Compilers). Gruß Thomas -- Email: thomas-rapp@web.de Home: home.t-online.de/home/thomas-rapp/ [ - Answer - Quote - Direct link - ] |
2003-05-19, 19:04 h THDany Posts: 38 User |
Leider reicht die Deklaration mit __saveds nicht. Aber ich bin ja bislang mit dem far code gut zurecht gekommen. Wenn jemand Erfahrung mit Miami.h hat gibt es da keine Möglichkeit es auch mit far code laufen zu lassen? [ - Answer - Quote - Direct link - ] |
2003-05-19, 19:08 h Solar Posts: 3680 User |
Wie gesagt, das Problem ist nicht die Miami.h - die teilt dem Compiler nur mit, welche Symbole in der Objektdatei vorhanden sind. Die Probleme treten dann auf, wenn das Programm, das Miami.h includet, mit einer anderen Option als die Miami-Bibliothek compiliert wurde - dann fliegt nämlich der Linker (gute Umgebung) bzw. das Executable (nicht so gute Umgebung) auf die Nase. [ - Answer - Quote - Direct link - ] |
2003-05-19, 19:11 h THDany Posts: 38 User |
Und was kann ich dagegen machen? [ - Answer - Quote - Direct link - ] |
2003-05-19, 19:18 h Solar Posts: 3680 User |
Alle betreffenden Bibliotheken mit demselben Compiler-Setting compilieren. Evtl. gibt's da noch den einen oder anderen Trick, aber das ist dann AmigaOS-spezifisch, da muß ich leider passen. [ - Answer - Quote - Direct link - ] |
2003-05-19, 19:32 h THDany Posts: 38 User |
Muß man __saveds definieren? Hab gesehen bei mir gibts ne Zeile die "#define __saveds" lautet. Muß ich da was angeben? [ - Answer - Quote - Direct link - ] |
-1- | [ - Post reply - ] |
amiga-news.de Forum > Programmierung > StormC/Miami/Farcode/Nearcode... | [ - Search - New posts - Register - Login - ] |
Masthead |
Privacy policy |
Netiquette |
Advertising |
Contact
Copyright © 1998-2024 by amiga-news.de - all rights reserved. |