Conjunto de instruções
Conjunto de instruções são as operações que um processador, microprocessador, microcontrolador, CPU ou outros periféricos programáveis suporta, fornece ou disponibiliza para o programador, ou seja, é a representação em mnemônicos do código de máquina, com a finalidade de facilitar o acesso ao componente.
Imagem: marcelo träsel · BY-SA · Openverse
Cada componente possui o seu próprio conjunto de instruções, que é fornecido pelo fabricante, que também costuma fornecer ou disponibilizar um montador assembly, que transforma o conjunto de instruções em código de máquina para ser utilizado pelo componente. No caso dos processadores, quando o conjunto de instruções for reduzido leva-o a ter o nome de RISC; e se forem complexas, o nome de CISC. ● “Fronteira” entre o projectista e o programador de uma máquina: – Projectista: fornece os requisitos funcionais de uma CPU ● quantos e quais registadores? quais operações na ULA? qual organização da Unidade de Controle? – Programador: fornece o modo mais básico de interagir com o hardware do computador ● Nesse nível de programação, é necessário conhecer alguns detalhes internos da máquina: conjunto de registadores, estrutura da memória, tipos de dados disponíveis directam O projeto de um conjunto de instruções é muito complexo, uma vez que ele afeta muitos aspectos do sistema computacional
Imagem: Marinha do Brasil · BY-SA · Openverse
Arquitetura do conjunto de instruções (instruction set architecture - ISA) se distingue da microarquitetura, que é o conjunto de técnicas de design de processadores usado para implementar o conjunto de instruções. Computadores com diferentes microarquiteturas podem compartilhar um conjunto de instruções comum. Por exemplo, o Intel Pentium e o AMD Athlon implementam versões quase idênticas do conjunto de instruções x86, mas com diferentes projetos internos. O conceito de uma arquitetura distinta do projeto de uma máquina específica, foi desenvolvido por Fred Brooks na IBM durante a fase de projeto do System/360.
Imagem: MARCO AURÉLIO ESPARZ… · BY-SA · Openverse
Um conjunto de instruções complexo (Complex Instruction Set Computer - CISC) tem muitas instruções especializadas, algumas das quais raramente serão usadas em programas práticos. Um conjunto reduzido de instruções (Reduced Instruction Set Computer - RISC) simplifica o processador implementando somente as instruções que são frequentemente utilizadas; operações não usuais são implementadas como sub-rotinas, onde o tempo de execução extra é compensado pela sua utilização rara. Teoricamente tipos importantes são o Minimal Instruction Set Computer e o One Instruction Set Computer, mas estes não são implementados em processadores comerciais. Outra variação é o Very Long Instruction Word (VLIW) onde o processador recebe muitas instruções codificadas em uma única palavra de instrução.
A linguagem de máquina é feita a partir de declarações ou instruções simples, é uma representação para instruções em um nível mais baixo. Todo programa é traduzido por uma linguagem de nível mais alto (como Java e C++) para a linguagem de máquina. Na arquitetura de processamento, uma determinada instrução pode especificar: Operações mais complexas são construídas combinando estas instruções simples, que são executadas sequencialmente, ou de outra forma, dirigidas por instruções de controle de fluxo.
Partes de uma instrução
Em arquiteturas tradicionais, uma instrução inclui um código de operação que especifica a operação a ser executada, como adicionar conteúdo da memória para um registrador, tendo zero ou mais operandos especificados, que podem referenciar registradores, posições de memória ou dados literais. Os operandos especificados podem ter modos de endereçamento que determinam o seu significado. Existem arquiteturas com palavra de instrução muito longa(VLIW), que incluem muitos microcódigos, onde múltiplos opcodes e operandos são especificados em uma única instrução. Alguns conjuntos de instruções não tem um campo de opcode (como Transport Triggered Architectures (TTA) ou a Forth virtual machine), só operando(s). Alguns conjuntos de instruções não têm nenhum campo de operando especificado, como algumas máquinas de pilha.


