Większość komputerów zawiera tylko kilka tysięcy instrukcji
To zależy od tego, jak je policzysz. Czy wszystkie instrukcje o podobnej funkcji powinny być zgrupowane razem, czy różne odmiany powinny być liczone oddzielnie? A może powinny być pogrupowane według operacji, które CPU musi wykonać, aby je zaimplementować (i jak różne muszą być te operacje, aby instrukcje były „różne”)?
Ile jest instrukcji x86-64?
Odpowiedź? Gdziekolwiek od 981 do 3683, w zależności od kryteriów, z których korzystasz.
Ale dlaczego jest tak niewielu (lub tak wielu), podczas gdy mogłoby być nawet więcej? Zasadniczo ograniczenie to nie jest techniczne, ale ekonomiczne. Nikt nie chce tych dodatkowych instrukcji na tyle mocno, aby uzasadnić ich dodanie.
Niektóre mogą być niezwykle przydatne, na przykład DIVIDE, EXPONENT lub warunkowe
operacje.
To kilkanaście takich, z których większość obecnych procesorów już ma. Miliony czy miliardy instrukcji? Nikt ich nie chce.
Tylko dlatego, że uważasz, że instrukcja może być „przydatna”, nie oznacza, że warto ją wdrożyć. Ponieważ prawie całe współczesne kodowanie jest wykonywane w językach wysokiego poziomu, tak długo, jak istnieją wystarczające instrukcje, aby zadowolić twórców kompilatorów, wszyscy są szczęśliwi. Wszelkie inne „przydatne” operacje, które są pożądane, można zaimplementować w kodzie wyższego poziomu.
Oczywiście są od tego wyjątki, dlatego nowoczesne procesory mają zwykle więcej instrukcji. Ale były też przypadki, w których instrukcje były usuwane , ponieważ nie były używane na tyle, aby uzasadnić ich zachowanie. Można to zrobić, aby zaoszczędzić krzem, zmniejszyć złożoność, zwiększyć prędkość lub po prostu uniknąć konieczności obsługi funkcji, których nikt nie chce.