We wcześniejszych procesorach nie wszystkie rejestry były równe:
- Na chipach nie było wystarczającej ilości miejsca, aby mieć jednostkę dodającą dla każdego rejestru.
- Przy 8 bitach nie było wystarczającej liczby kodów dla wszystkich możliwych kombinacji źródła i celu.
Zakładając, że jeden konkretny rejestr był zawsze wplątany, gdy zaangażowany był sumator, sprawił, że układ stał się mniej skomplikowany, a kody operacyjne krótsze.
Np. 6510 (używany w Commodore 64) może dodawać tylko przy użyciu rejestru A, a indeksowanie używa X lub Y. Istnieją instrukcje INC X i INC Y, ale nie ma INC A.
Ponieważ rejestry miały różne zastosowania, wybrano mnemoniki odzwierciedlające ich użycie. Np. A, X i Y w 6510 (zamiast A, B i C).
Nazwy w 8086 zostały wybrane, aby odzwierciedlić ich użycie. W przypadku 4 rejestrów ogólnego przeznaczenia logiczne było nazwanie ich AX, BX, CX i DX. Dodatkowe rejestry indeksujące nazwano BP i SP (mnemoniczne: wskaźnik podstawowy, wskaźnik stosu).
Ponieważ wiele kodów rozszerzono do 16 bitów, było trochę miejsca na wskazanie, który z czterech rejestrów został użyty. Jednak niektóre z historycznych powodów wciąż miały zastosowanie, ponieważ CX był nieco wyjątkowy: REP i polubienia, które są 8-bitowymi kodami, zawsze używają CX jako licznika. Prosty mnemonik, CX = Counter, pomaga zapamiętać, który z nich jest używany.
Kody dla następców 8086 musiały być kompatybilne wstecz i były nieporządkiem z powodu kodów o zmiennej długości. Kiedy 32-bitowe magistrale stały się bardziej popularne, wypróbowano procesory o stałej długości kodu operacyjnego. Upraszcza to część dekodującą procesora, która zwalnia miejsce, które można wykorzystać np. Dla większej liczby rejestrów.
Procesory, które postępowały zgodnie z tym tokiem myślenia, nazywane są procesorami RISC (CPU z ograniczonym zestawem instrukcji), w przeciwieństwie do procesora CISC (CPU z zestawem instrukcji złożonych).
Im więcej rejestrów, tym mniej rozprzestrzenia się w pamięci. Zasadniczo rejestry są najszybszą dostępną pamięcią podręczną, więc zwiększenie liczby rejestrów jest dobrym pomysłem, nawet w dzisiejszych czasach. Brak wyspecjalizowanych instrukcji został (miejmy nadzieję więcej) zrekompensowany szybszym wprowadzaniem prostych instrukcji.
32-bitowe kody o stałej długości mają wystarczającą ilość miejsca, aby uwzględnić źródło, drugie źródło, operację i miejsce docelowe. SPARC zdołał zawinąć 5 bitów dla każdego źródła, drugiego źródła i miejsca docelowego, a zatem miał 32 rejestry widoczne jednocześnie.
32 rejestrów jest zbyt wiele, aby używać liter, a i tak były one w większości równe, więc numerowanie ich było oczywistym wyborem. „R” służyło do odróżnienia ich od stałych 0..31, a „R” był łatwym mnemonikiem rejestru. Dlatego: R0..R31.
Przez lata Pentium i jego następcy zachowali zgodność wsteczną. Włączono jednak również wiele bardziej udanych pomysłów RISC. Często te nowe instrukcje podobne do RISC będą działać szybciej niż wersje kompatybilne wstecz.
Liczba rejestrów została również zwiększona przez Intel, aby zmniejszyć liczbę dostępów do pamięci.
I najwyraźniej Intel w końcu zaczął używać notacji R. Kompatybilność wsteczna zapewni, że AX, BX, ... pozostaną, ale założę się, że AX jest tylko synonimem np. R0.
Zastrzeżenie : Powyższe jest moim poglądem na historię. To będzie niekompletne, ponieważ nie byłem w pobliżu, by być świadkiem wcześniejszych części historii. Niemniej mam nadzieję, że niektórym się przyda.