@Joachim
Adressbusbreite von 3 Bit ? Reden wir hier wir wirklich von x86'ern ?
@Rufus
Also der C166 ist wirklich eher noch hässlicher als die x86er =)
Das Teil kann einen Adressraum von 16MByte, hat aber nur 16 Bit
Register. Er kennt eine unsegmentierte Betriebsart, da wir nur mit 16
Bit Offsets gearbeitet und es steht nur ein Adressraum von 64k zur
Verfügung. Lustig wirds in der segmentierten Betriebsart:
Zunächst einmal ist der Programmzähler aufgeteilt, die unteren 16 Bit
sind im IP, die oberen 8 Bit Im CSP (Code Segment Pointer).
Das geht ja noch, richtig lustig wirds beim Zugriff auf Daten.
Der Adressbereich ist zwar für Code und Daten derselbe, Adressen für
die Daten werden aber völlig anders gebildet:
- Die unteren 16 Bit der Adresse stehen z.B. in einem Register, über
das indirekt Adressiert wird. Davon sind aber nur die Bits 0-13 Teil
der Adresse, Bits 14 und 15 Addressieren dann eines der register DPP0
bis DPP3 (Data Page Pointer). Diese Register enthalten die oberen 10
Bits für die Datenadresse.
Der C166 kennt also 256 64KB grosse Codesegmente, und 1024 16KB grosse
Datapages.
Na, wenn das nicht hässlich ist, dann weiss ich auch nicht =)
Vom C196 hab ich noch nie was gehört.