Die meisten Computer enthalten nur ein paar tausend Anweisungen,
Das hängt davon ab, wie Sie sie zählen. Sollten alle Anweisungen mit einer ähnlichen Funktion zusammengefasst oder verschiedene Variationen separat gezählt werden? Oder sollten sie danach gruppiert werden, welche Operationen die CPU ausführen muss, um sie zu implementieren (und wie unterschiedlich müssen diese Operationen sein, um die Anweisungen "anders" zu machen)?
Wie viele x86-64-Anweisungen gibt es überhaupt?
Die Antwort? Je nach den von Ihnen verwendeten Kriterien zwischen 981 und 3683.
Aber warum so wenige (oder so viele), wenn es noch mehr geben könnte? Grundsätzlich ist die Grenze nicht technisch, sondern wirtschaftlich. Niemand möchte diese zusätzlichen Anweisungen dringend genug, um das Hinzufügen zu rechtfertigen.
Einige können äußerst nützlich sein, z. B. DIVIDE, EXPONENT oder bedingt
Operationen.
Das macht ein Dutzend davon aus, von denen die meisten bereits über aktuelle CPUs verfügen. Millionen oder Milliarden von Anweisungen? Niemand will sie.
Nur weil Sie der Meinung sind, dass eine Anweisung "nützlich" sein könnte, bedeutet dies nicht, dass sich die Implementierung lohnt. Da fast die gesamte moderne Codierung in Hochsprachen erfolgt, sind alle glücklich, solange genügend Anweisungen vorhanden sind, um Compiler-Autoren zufrieden zu stellen. Alle anderen gewünschten 'nützlichen' Operationen können in Code höherer Ebene implementiert werden.
Es gibt natürlich Ausnahmen, weshalb moderne CPUs tendenziell mehr Anweisungen enthalten. Es gab jedoch auch Fälle, in denen Anweisungen entfernt wurden, weil sie nicht ausreichend verwendet wurden, um ihre Aufbewahrung zu rechtfertigen. Dies kann erfolgen, um Silizium zu sparen, die Komplexität zu verringern, die Geschwindigkeit zu erhöhen oder einfach zu vermeiden, dass Funktionen unterstützt werden müssen, die niemand möchte.