Virtueller 8086
-
Hi!
Ich habe folgendes Problem:
Ich soll unter einem Windows-System Software für Rechner laufen lassen, die auf der 8086er-Architektur aufbauen. Das soll über den virtuellen 8086-Modus funktionieren, der ab dem 386er mit in die Hardware eingebaut ist.Wenn ich jetzt beipielsweise über CreateProcess die Software von einem Monitorprogramm aus starte und in diesen Modus versetze, gibt es dann irgend eine Möglichkeit, dem Rechner zu sagen, bei welcher Adresse er mit dem Ausführen des Codes anfangen soll? Oder weiß jemand, auf welche Adresse der Beginn eines solchen Tasks festgelegt ist?
-
ja
-
Wie, jetzt, "ja"?
Wäre nett, wenn Du Dich etwas genauer ausdrücken könntest.
-
nein
-
O.K., ich hab keine Lust auf diese Spielchen. Bitte nur sinnvolle Beiträge posten.
-
ja
-
Hi Count,
weiss leider nicht so genau was du meinst, aber ein Win32
Programm beginnt standardmässig bei 0x00400000.Hoffe das hilft.
Jockel
-
Besten Dank, das hilft mir sehr weiter.
-
Das kommt auf den Linker und dessen Einstellung an! Jeffrey Richter schreibt dazu:
Die Basisadresse, an die eine Anwendung geladen wird, legt dabei der Linker fest. Verschiedene Linker können jedoch durchaus verschiedene Standartwerte für diese Basisadresse besitzen. Der Visual-C++-Linker verwendet standartmäßig den Wert 0x00400000 für die Basisadresse, da dies die niedrigste Adresse darstellt, an die eine ausführbare Datei unter Windows 98 geladen werden kann. Die Basisadresse, an die Ihre Anwendung beim Start geladen werden soll, kann jedoch beim Microsoft-Linker jederzeit mithilfe der Linker-Option /BASE:address vorgegeben werden.
Hab ich zufällig erst gestern gelesen
[ Dieser Beitrag wurde am 27.02.2003 um 14:02 Uhr von flenders editiert. ]
-
Nun, ich habe hier eine Visual-C++-Umgebung. Ich denke, das wird soweit klar gehen. Jetzt habe ich aber noch eine andere Frage:
Ist es möglich, einen Thread explizit im virtuellen 8086-Modus laufen zu lassen, den Rest des Programms aber nicht?
Das soll so aussehen, daß ich ein Monitorprogramm habe, das ganz normal unter Windows läuft. Dieses Programm wiederum soll alte 8086-Programme in den Speicher laden (in Form von exe-Dateien), diese im virtuellen 8086-Modus starten und sich um die Kommunikation dieser Programme untereinander kümmern.
Der Witz dabei ist, daß die Programme vorher auf unterschiedlichen Rechnern liefen, die über serielle Kabel miteinander verbunden waren.Ich meine, man sollte diese Programme lieber gleich als eigenständige Prozesse starten, aber mein Betreuer hier in der Firma sagt, ich sollte das nach Möglichkeit über Threads machen.
-
Ich versteh da net so viel davon, aber vielleicht hilft dir sowas hier?!