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 .
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.