Es gibt keine universelle Antwort darauf. Offensichtlich würden Sie bei am meisten genug Bits benötigen, um die Anzahl der Register zu speichern. Wenn Sie also 12 Register haben, benötigen Sie 4 Bits (2^4 == 16).
Aber ein Befehlssatz könnte einige Register auf verschiedene Arten behandeln (z. B. Anweisungen, die implizit nur ein bestimmtes Register adressieren; siehe LOOP
für x86). Eine CPU könnte also 9 Register haben, aber da man nur mit spezialisierter Anweisung darauf zugreifen kann, benötigt man nur 3 Bits, um die restlichen 8 zu adressieren. Einige Befehle können auch nur eine bestimmte Teilmenge von Registern zulassen, wodurch auch die Anzahl reduziert wird Bits, die benötigt werden, um sie zu adressieren (sagen wir, ein Befehl erlaubt nur den Betrieb in den Registern 0-3).
Und um es noch komplizierter zu machen, gibt es register windows, die nur einen Teil der physischen Register für den Befehlssatz verfügbar machen.
Das klingt wie Hausaufgaben, vor allem der letzte Teil. Wenn Sie das nicht herausfinden können, brauchen Sie wirklich ein Stück Papier und setzen Sie sich zum Nachdenken hin. – DarkDust
Beachten Sie, dass die x86-ISA keine Anweisungen fester Größe verwendet. Wenn Sie sich für die Details der Befehlscodierung auf dem x86 interessieren, lesen Sie das [Intel Softwareentwicklungshandbuch] (http://www.intel.com/content/www/us/en/processors/architectures-software-developer- handbooks.html) (der Abschnitt über ModR/M-Bytes könnte für Sie von besonderem Interesse sein). – Michael
@DarkDust Ich folge nur einem Lehrbuch und ich frage mich, wie sie zu der geringsten Anzahl von Bits benötigt werden. – ethane