Szybka odpowiedź brzmi: projektanci procesora najpierw projektują zestaw instrukcji (znaczenie różnych kodów instrukcji, obsługiwane operandy i sposób ich określania itp.), A następnie budują procesor, łącząc bramki logiczne, tak aby zaimplementować ten zestaw instrukcji.
Gdyby podłączili go inaczej, zestaw instrukcji byłby inny.
Mikroprogramowane procesory: przynajmniej niektóre rodzaje pamięci (istnieje kilka możliwości) w ramach wzajemnych połączeń, które określają, jaki jest zestaw instrukcji. Tak więc zmieniając zawartość tej pamięci („mikrokodu”), można zmienić zestaw instrukcji. Powiedziałem „co najmniej” - może się znacznie bardziej skomplikować.
Jeśli chcesz dowiedzieć się więcej, sugeruję zacząć od środka: Naucz się języka asemblera dla niektórych maszyn. Najlepiej nie x86 / x64, ponieważ jest to bardzo skomplikowane. Wybrałbym ARM, jeśli chcesz czegoś, którego język asemblera jest stosunkowo łatwy do nauczenia, a także odpowiedni do aktualnej technologii.
Następnie, jeśli chcesz dowiedzieć się więcej, dowiedz się o obwodach logicznych: AND, OR, NOT, NAND, NOR; następnie obwody sekwencyjne, zaczynając od przerzutników itp.
Kiedy zaczniesz myśleć o tym, jak zbudować pełnoprawny procesor, a nawet coś bardzo prostego, jak PDP-8, z tych części pomyślisz: „stary, to ogromne i skomplikowane”. Cóż, jest ogromny. Ale to nie jest tak skomplikowane, jak mogłoby się początkowo wydawać. Złożoność składa się głównie z warstw: gdy zrozumiesz niską warstwę, nie musisz się już martwić o jej szczegóły, tylko o to, co robi. Widoczna jest także złożoność powtórzeń. Sumator 32-bitowy ma około 16 razy więcej bramek niż sumator 2-bitowy. Ale jeśli rozumiesz 2-bitowy sumator, możesz zrozumieć wersję 32-bitową. To tylko więcej tego, co już widziałeś.