Hallo Reinhard,
da hast du recht, ich hab wohl schon ewig keine x86-Hardware
mehr entworfen oder analysiert.
ich auch schon lange nicht mehr.
Mit dem „leider“ hast du auch recht, ich weiss bis heute
nicht, wozu das gut sein soll. Immerhin besteht Hoffnung: es
sind die letzten 16 Bytes vorgesehen, bei der
128-bit-Generation kann man also keinen Jump mehr unterbringen
und braucht ein neues Reset-Konzept. Geschieht Intel recht, an
Adresse 0 gäbe es das Problem so nicht. Ich habs eben schon
immer besser gewusst!
Je nach Anwendung ist jedes Konzept Sch… !
Wenn die CPU einfach damit anfängt Code ab Adresse 0 abzuarbeiten, stellt sich die Frage wo man die Interrupt-Vektoren ablegt.
Eigentlich macht das der x86 auch so, nur wird dabei das Segment auf 0xFFFF gesetzt. Durch das Speicherkonzept des 8086 ergeben sich dann die 16 Bytes.
BTW: Welche andere CPU startet eigentlich noch so ?
Als andere Variante bleibt dann einen Resetvektor zu benutzen.
Für den CPU-Entwickler ist es dann am einfachsten einen zusätzlichen NMI einzubauen.
Dann liegen aber alle Vektoren im ROM, was wieder Sch… ist, wenn man ein Entwicklungs- oder Betriebssystem bauen will, ausser man hat die Möglichkeit die Vektortabelle im Speicher zu verschieben.
Die andere Möglichkeit ist dann noch den Resetvektor an der höchsten Adresse abzulegen.
Ob jetzt das ROM oben oder unten liegt ist dabei eigentlich egal.
MfG Peter(TOO)