As CPUs usam um conjunto de instruções chamadas
código da máquina , que são números binários (sequências de 0s e 1s). Essas instruções são muito básicas, realizando operações simples como:
*
operações aritméticas e lógicas: Adicionando, subtraindo, multiplicando, dividindo, comparando (maior que, menor que, igual a), lógico e, ou não, etc.
*
Movimento de dados: Movendo dados entre registros (memória interna da CPU), locais de memória e dispositivos de entrada/saída. Isso inclui carregar dados da memória em um registro, armazenar dados de um registro na memória e transferir dados entre os registros.
*
Fluxo de controle: Alterando a ordem em que as instruções são executadas. Isso inclui:
*
Jump/Branch: Alterar o ponteiro de instrução para um endereço diferente na memória, permitindo a execução condicional (declarações se-then-else) e loops.
*
Ligue/retornar: Chamando sub -rotinas (funções) e retornando ao ponto da chamada.
*
entrada/saída (E/O): Comunicação com dispositivos externos, como teclados, ratos, displays, discos rígidos e interfaces de rede.
*
Controle do sistema: Instruções relacionadas ao gerenciamento da própria CPU, como o manuseio de interrupções (sinais indicando eventos que requerem atenção imediata) e alteração de modos de CPU (por exemplo, alternando entre o modo de usuário e kernel).
Essas instruções básicas são combinadas para criar operações e programas mais complexos. É importante observar que as instruções * específicas * variam significativamente entre diferentes arquiteturas da CPU (x86, ARM, RISC-V, etc.). Cada arquitetura possui sua própria arquitetura de conjunto de instruções (ISA), definindo as instruções que entende. Embora as categorias de instruções sejam semelhantes, os códigos exatos (representações binárias das instruções) e suas funcionalidades diferem.
Os programadores raramente funcionam diretamente com o código da máquina. Em vez disso, eles usam linguagens de programação de nível superior (como C ++, Java, Python) que são então compiladas ou interpretadas no código da máquina que a CPU pode executar. Os montadores traduzem a linguagem de montagem (uma representação legível pelo homem do código da máquina) no código da máquina.