Pode haver diversas justificativas para uma instrução com dois opcodes:
1.
Extensão do conjunto de instruções: Uma instrução com dois opcodes pode ser usada para estender o conjunto de instruções de um processador. Ao combinar dois opcodes, uma única instrução pode ser usada para realizar múltiplas operações. Isso pode reduzir o número de instruções necessárias para executar uma determinada tarefa e tornar o código mais eficiente.
2.
Funcionalidade aprimorada: Dois opcodes podem ser combinados para fornecer funcionalidades aprimoradas que não podem ser alcançadas com um único opcode. Por exemplo, uma instrução com dois opcodes poderia ser usada para realizar um salto condicional baseado no valor de um registrador ou localização de memória.
3.
Otimização: Em alguns casos, combinar dois opcodes em uma única instrução pode levar a uma melhor otimização do código. O compilador pode identificar sequências comuns de instruções e substituí-las por uma única instrução, o que pode melhorar o desempenho do código.
4.
Compatibilidade: Dois opcodes podem ser usados para manter a compatibilidade com processadores mais antigos. Ao fornecer uma instrução com um opcode antigo e um novo, os processadores que suportam o opcode mais antigo ainda podem executar a instrução, enquanto os processadores que suportam apenas o novo opcode podem ignorar o antigo.
5.
Pipelining de instruções: Dois opcodes podem ser usados para melhorar a eficiência do pipeline de instruções. Ao combinar múltiplas operações em uma única instrução, o processador pode buscar menos instruções e reduzir o número de estágios do pipeline necessários para concluir uma tarefa.
É importante observar que o uso de dois opcodes também pode ter algumas desvantagens, como aumento do tamanho e da complexidade do código, mas em muitos casos, os benefícios superam as desvantagens.