Post by Benjamin BoldtPost by Benjamin BoldtKennt jemand von euch gute Quellen für Artikel und Tutorials über den
sog. "Unreal Mode"?
Dann kann man im Real Mode bis zu 4 GB adressieren. ... Eine
Schritt-für-Schritt-Anleitung bei der jeder einzelne
Du ist Opfer der MS/INTEL-x86-Lüge, daß im real mode nur 2^20 Byte
adressiert werden könnten.
Interessant. Jemand, der behauptet 2**32 Speichereinheiten adressieren
zu koennen, ist ein Opfer der Luege, dass man in Wirklichkeit nur 2**20
Speichereinheiten adressieren koennte?
Post by Benjamin BoldtZunächst einmal kann "überadressiert"
werden, wenn Du als Segment-Adresse 0FFFF wählst und nicht 0F000, wie
die 1 MegByter für richtig halten,
Und dazu nicht vergessen, die A20 einzuschalten, sonst ist ganz fix die
Interrupt-Tabelle futsch. MS/Intel haben diesen Speicherbereich oberhalb
1MB seinerzeit HMA (High Memory Area) genannt.
Post by Benjamin BoldtWarum MS/INTEL-Lüge? Hast Du mal getestet, in welcher CPU-Betriebsart
HIMEM.SYS geladen wird
Real Mode mit 64K-Limits.
Post by Benjamin Boldtund welche Betriebs-Art danach besteht.
Real Mode mit 64K-Limits. :-) Ja. Tatsache.
Post by Benjamin BoldtAber, es kommt noch dicker: Beide Unternehmen behaupten, daß sich die
CPU nicht vom PM in den RM zurückschalten ließe, da sich Datenmüll in
dem Befehlscache befände.
Das ist in zweierlei Hinsicht Unsinn. Erstens *empfiehlt* Intel ein
Leeren der Befehlspipeline aus Kompatibilitaetsgruenden. Zweitens gab
es das Problem des Nicht-Zurueckschalten-Koennens nur beim 286er, seit
dem i386er ist das ueber das CR0-Register trivial machbar.
Post by Benjamin BoldtDas stimmt soweit. Aber, es gab den Befehl
LOADALL, mit dem alle Register auf einmal geladen werden konnten und
dadurch jede Betriebsart (in CR0 wird die CPU umgeschaltet).
Ein Befehl, dessen Opcode und exaktes Verhalten sich von CPU zu CPU
geaendert hat und wegen relativer Nutzlosigkeit (wahlweise: Zwang durch
nicht genauer benannte US-Behoerden) seit dem 386er ab Generation
Pentium eingestampft wurde (SMM ist BTW weitaus praktischer).
Post by Benjamin Boldtum sich unfaire Vorteile im Wettbewerb zu verschaffen.
Fuer mich sieht der Befehl LOADALL eher nach einer Debug-Routine fuer
Hardware-Designer, denn nach einer Verschwoerung aus. Gerade, *weil* er
einige nicht im normalen Betrieb nicht ganz sinnlose Checks eben nicht
macht. Immerhin wurde der Befehl auf dem 286er auch von genuegend
Leuten verwendet, denen man nicht unbedingt extrem nahe Verbindungen zu
Microsoft vorwerfen koennte. Von Wettbewerbsvorteilen kann also wohl
kaum die Rede sein.
Auch spricht "The 286 LOADALL is widely known because a 15-page lntel
confidential document describing its use was given to many developers."
nicht gerade von uebertriebener Geheimhaltung.
Quelle: <URI:http://www.x86.org/articles/loadall/tspec_a3_doc.htm>
Post by Benjamin BoldtAber, jeder
Assembler-Programmierer kann darüber nachdenken, wie wohl beim 80286
mit nur 16-Bit-Registern und 20-Bit-Segment-Registern die 16 MByte
adressiert worden sein sollen.
Ueber die Descriptor-Cache-Register, die man primaer im Protected Mode
"gesetzt" hat (wenn auch indirekt)?
Post by Benjamin BoldtDa war LOADALL und nichts anderes zu der Zeit.
Variante 2 war ein Umschalten in dem Protected Mode, Zugriff auf den
Speicher und Zurueckschalten in den Real Mode via Prozessor-Reset.
Recht langwierige Sache, zugegeben.
Post by Benjamin BoldtIm 80386 und im Derivat 80486SLC gab es LOADALL noch, dann soll die
CIA Intel gebeten haben, den Befehl aus der CPU-Maske zu entfernen.
*prust* <ironisch>Das war die NSA. Ich muss das wissen.</ironisch>
Obiges Dokument meint dazu uebrigens:
"Unlike the 286 LOADALL, the 386 LOADALL is still an Intel top secret. l
do not know of any document that describes its use, format, or
acknowledges its existence. Very few people at Intel wil1 acknowledge
that LOADALL even exists in the 80386 mask. The official Intel line is
that, due to U.S. Military pressure, LOADALL was removed from the 80386
mask over a year ago. However, running the program in Listing-2
demonstrates that LOADALL is alive, well, and still available on the
latest stepping of the 80386."
Es war also das Militaer. :-)
Post by Benjamin Boldt(ich baute von 1998 bis 2000 eine
LOADALL-Emulation für damals 80486, Pentium und PII sowie wenig später
PIII, daher mein Wissen),
Wozu braucht man LOADALL fuer 386+? (Ausser fuer esoterische Tests,
meine ich?)
Post by Benjamin Boldtz.B. real mode Code irgendwo oberhalb der
offiziellen Grenzen ausführen. Oho, mag da mancher sagen, ein Jump und
Deine hohen Segmente sind futsch.
Dafuer muesste es mindestens ein FAR JUMP sein. Und wenn ich mich schon
in Speicher befinde, der sich ausserhalb der "offiziellen Grenzen"
befindet, ist ein FAR JUMP damit doch das ideale Mittel, wieder in Code
zu springen, der innerhalb der offiziellen Grenzen liegt.
Post by Benjamin BoldtWesentlich beim REAL BIG MODE (so steht es im Microsoft Quelltext für
himem.sys), dem eigentlichen real mode ist, daß Du vom PM in den RM
schaltest und den Datenmüll aus der Befehlspipe entfernst, nicht mit
einem Reset, sondern mit einem Jump.
Das ist weniger wesentlich, als man gemeinhin zu denken scheint.
Saemtliche CPUs, mit denen ich in diesem Zusammenhang bisher zu tun
hatte, interessiert es nicht, ob man den FAR JUMP nun ausfuehrt oder
nicht. Viel wesentlicher ist das Anpassen der Segmentregister-Limits,
solange man sich im Protected Mode befindet.
Post by Benjamin BoldtIch hoffe, das genügt Dir an Info und Unterweisung, wenn Du mehr von
mir wissen willst, muß ich Dir eine Rechnung stellen.
Ist das die Vorform von "Wenn ich Dir mehr erzaehlen wuerde, muesste ich
Dich toeten?". Entschuldigung, aber das hier ist Usenet. Und das Wissen
zum Big Real Mode ist hier auch noch weit genug verbreitet, so dass hier
niemand dieses Allgemeinwissen kaufen muss. Die Quelle habe ich ja
weiter oben angegeben. :-> Share your knowledge.
Vinzent.