Die beste Antwort, die ich Ihnen geben kann, ist: Ja, es ist richtig, dass bei den meisten modernen CPUs nur im Kernelmodus ausgeführter Code einen doppelten oder dreifachen Fehler auslösen kann . Es ist sehr selten (aber nicht unmöglich), dass ein nicht vom Kernel initiierter Befehl aufgrund des ProtectedMode-Vorgangs einen schwerwiegenden Fehler auslöst, der die physische Adressierung so abstrahiert, dass eine Verzweigung in eine ungültige Registeradresse nicht mehr möglich ist.
Ja, jeder Maschinencode, der für eine CPU ohne ProtectedMode zusammengestellt wurde, sollte zumindest neu zusammengesetzt werden, wenn er nicht geändert wird, um mit einer neueren CPU zu arbeiten.
Von Wikipedia: https://en.wikipedia.org/wiki/Protected_mode#Virtual_8086_mode
Virtueller 8086-Modus Hauptartikel: Virtueller 8086-Modus
Mit der Veröffentlichung des 386 bietet der Protected Mode den von den Intel-Handbüchern als virtuellem 8086-Modus bezeichneten Modus. Der virtuelle 8086-Modus ermöglicht es, Code, der zuvor für den 8086 geschrieben wurde, unverändert und gleichzeitig mit anderen Aufgaben auszuführen, ohne die Sicherheit oder die Systemstabilität zu beeinträchtigen. [29]
Der virtuelle 8086-Modus ist jedoch nicht mit allen Programmen vollständig abwärtskompatibel. Programme, die Segmentmanipulationen, privilegierte Anweisungen, direkten Hardwarezugriff oder die Verwendung von selbstmodifizierendem Code erfordern, erzeugen eine Ausnahme, die vom Betriebssystem bereitgestellt werden muss. [30] Darüber hinaus generieren Anwendungen, die im virtuellen 8086-Modus ausgeführt werden, einen Trap mit Anweisungen, die Eingabe / Ausgabe (E / A) umfassen, was die Leistung beeinträchtigen kann. [31]
Aufgrund dieser Einschränkungen können einige Programme, die ursprünglich für den 8086 ausgeführt wurden, nicht im virtuellen 8086-Modus ausgeführt werden. Infolgedessen muss die Systemsoftware beim Umgang mit Legacy-Software die Systemsicherheit beeinträchtigen oder die Abwärtskompatibilität beeinträchtigen. Ein Beispiel für einen solchen Kompromiss ist bei der Veröffentlichung von Windows NT zu sehen, die die Kompatibilität mit "schlecht verhaltenen" DOS-Anwendungen rückgängig machte. [32]
Ich hoffe, das hilft ein wenig, und wenn es nicht ausreicht, kann ein anderer Lücken in meinem Verständnis schließen.