Bir işlemcinin talimat setine bir göz attıysanız, bunları gruplamanın birkaç yolu vardır. Örneğin, tüm ADD
talimatlar ve tüm XOR
talimatlar birlikte gruplandırılabilir .
Aynı komutun her bir grubunda, bellekte veya kayıtlarda çalışan sürümler olabilir. İşlemcinin sahip olduğu kayıt sayısını etkili bir şekilde tanımlayan bu alt gruplamadır.
8-bitlik bir varsayımsal bir örnek olarak, let Diyelim $Ax
talimatları olabilir ADD
talimatları ve $Cx
olabilecek XOR
talimatlar. Bu tasarımla, işlenenleri tanımlamak için sadece dört bit kaldı!
- Birinin sadece dört genel amaçlı kaydı olabilir ve birini tanımlamak için iki bit, diğerini tanımlamak için iki bit kullanabilir.
- Ya da, biri "özel" varyantları ayırt etmek için ilk biti ve diğer 3 biti, akümülatörle çalışacak sekiz kayıttan hangisinin (
$x0
akümülatörün kendisi olabileceğini) tanımlamak için kullanılabilir .
- Veya bu sayıdan daha fazla kayıt olabilir - ancak hangi kayıtların hangi talimatlar için erişilebilir olduğunu sınırlar.
Tabii ki, 8 bitlik komut setlerini geçtik. Ama yine de, bu mantık geçmişte kayıt kümelerini tanımlamaya yardımcı oldu - bunu gelecekte yapmaya devam edecektir.
DÜZENLE (istendiği gibi)
Dört bit talimat içindir top Say: ADD
, SUB
, XOR
, MOV
, CMP
vb burada 16 olasılık vardır. Sonra, kayıt-to-kayıt olanlar talimatlar için (örneğin mantıklı ADD Rx,Ry
, belirtmek gerekir) Rx
ve Ry
. Diyelim ki sonraki iki bit x
ve son iki bit içindir y
. Böylece:
ADD R1, R2 => 'ADD' + 'R1' + 'R2' => $A0 + $04 + $02
Böyle bir kaydı tanımlamak için yalnızca iki bit ile, toplam dört kayıt için sadece yeriniz var!
Bir kenara, bazı kayıt kombinasyonlarının bir anlamı olmadığını unutmayın. Örneğin, MOV Rx, Rx
(hiçbir şey yapmaz) ve SUB Rx, Rx
(daima üretir 0
). Bunlar özel durum talimatları haline gelebilir:
SUB Rx, Rx
olabilir NOT Rx
- tek işlenen bir talimat.
MOV Rx, Rx
MOV
ikinci bir baytı anında değer olarak alan bir komut haline gelebilir MOV Rx, #$yy
.
Bu şekilde, programcı için daha büyük bir talimat seti sağlamak için, aksi takdirde işe yaramaz veya saçma talimatlar için delikleri doldurarak talimat haritası ile "oynayabilirsiniz". Ancak sonuçta, komut kümesi yazmaç kümesini tanımlar.