next up previous
Next: Formato de instrução no Up: Formato de instruções Previous: Formato de instruções

``Opcodes que expandem''

Consideremos um exemplo de uma máquina cujas instruções são de 16 bits e endereços de 4 bits, como mostra a Figura [*].

Figure: Exemplo de uma instrução
\begin{figure}
\begin{picture}(11,1.5)(-2,0)
\put(0,0){\framebox (11,1)}
\multip...
.... 2}}
\put(9.5,0.5){\makebox(0,0){\scriptsize end. 3}}
\end{picture}\end{figure}



Cada endereço de 4 bits especificam, por exemplo, um dos 16 registradores da máquina. Com o formato acima podemos ter 16 instruções de 3 endereços.

Suponhamos, porém, que precisamos de

Então podemos ter as 15 instruções de 3 endereços assim:

opcode 0000 xxxx yyyy zzzz
  0001 xxxx yyyy zzzz
    .    
    .    
  1110 xxxx yyyy zzzz


Quando os primeiros 4 bits valem 1111, usamos os seguintes 4 bits para especificar 14 instruções de 2 endereços:

opcode 1111 0000 yyyy zzzz
  1111 0001 yyyy zzzz
  1111 0010 yyyy zzzz
    .    
    .    
  1111 1101 yyyy zzzz


Quando os primeiros 8 bits valem 1111 1110 ou 1111 1111, usamos os próximos 4 bits para especificar 31 instruções de 1 endereço:

opcode 1111 1110 0000 zzzz
  1111 1110 0001 zzzz
    .    
    .    
  1111 1110 1111 zzzz
  1111 1111 0000 zzzz
  1111 1111 0001 zzzz
    .    
    .    
  1111 1111 1110 zzzz


Finalmente quando todos os primeiros 12 bits valem 1, usamos os últimos 4 bits para especificar 16 instruções de 0 endereço:

opcode 1111 1111 1111 0000
  1111 1111 1111 0001
    .    
    .    
  1111 1111 1111 1111


Na prática, opcode não são expandidos como no exemplo, da maneira tão regular e limpa, como veremos abaixo.


next up previous
Next: Formato de instrução no Up: Formato de instruções Previous: Formato de instruções
Siang Wun Song
2001-09-19