Qual nível as instruções são executadas e interpretadas pelo processador?

A linguagem de máquina ou código de máquina é uma continuação de bits que é interpretada pelo processador de um computador executando um programa de computador . É a linguagem nativa de um processador , ou seja, a única linguagem que ele pode processar. É composto de instruções e dados binários codificados a serem processados .

Cada processador possui sua própria linguagem de máquina, incluindo código de máquina que só pode ser executado na máquina para a qual foi preparado. Se um processador Uma é capaz de executar todas as instruções do processador B , dizemos que A é compatível com B . O inverso não é necessariamente verdadeiro: A pode ter instruções adicionais que B não conhece.

O código de máquina agora é gerado automaticamente, geralmente pelo compilador de uma linguagem de programação ou por meio de um bytecode .

Instruções de linguagem

As "palavras" de uma linguagem de máquina são chamadas de instruções . Cada um deles dispara um comando do processador (por exemplo: buscar um valor na memória para carregar um registro , adicionar dois registros , etc.).

Um processador com arquitetura RISC reconhece apenas algumas instruções diferentes, enquanto um processador com arquitetura CISC tem uma ampla variedade. No entanto, alguns processadores CISC recentes transformam internamente instruções complexas em uma série de instruções simples, que são então executadas.

Um programa é apenas uma longa sequência de instruções que são executadas pelo processador. Eles são executados sequencialmente, exceto quando uma instrução de salto transfere a execução para uma instrução diferente da seguinte. Existem também saltos condicionais que são executados (a execução continua em outro endereço) ou ignorados (a execução continua na próxima instrução) sob certas condições.

Código de operação

Cada instrução começa com um número chamado opcode (ou opcode ) que determina a natureza da instrução. Por exemplo, para computadores com arquitetura x86 , o opcode 0x6A(em binário 01101010) corresponde à instrução push (adicione um valor ao topo da pilha ). Portanto, a instrução 0x6A 0x14( 01101010 00010100) corresponde ao push 0x14 (adicione o valor hexadecimal 0x14 , ou decimal 20, ao topo da pilha).

Comprimento das instruções

Alguns processadores codificam todas as suas instruções com o mesmo número de bits (por exemplo: ARM , MIPS , PowerPC ), enquanto para outros o comprimento da instrução depende do opcode (exemplo: x86 ). A organização das combinações de bits depende muito do processador. O mais comum é a divisão em campos . Um ou mais campos especificam a operação exata (por exemplo, adição ). Os outros campos indicam o tipo de operandos , sua localização ou um valor literal (os operandos contidos em uma instrução são chamados de imediatos ).

Vantagens e desvantagens

Qual nível as instruções são executadas e interpretadas pelo processador?

Codificação binária dos códigos ASCII da palavra "Wikipedia"

Quando todas as instruções são do mesmo tamanho, elas também são alinhadas na memória . Por exemplo, se todas as instruções estão alinhadas em 32 bits (4 bytes), então os dois bits menos significativos do endereço de memória de qualquer instrução estão em zero. Isso permite, em particular, uma implementação mais fácil do cache de previsões de ramificação bimodal .

Por outro lado, o código de máquina ocupa menos espaço na memória se não tiver um tamanho mínimo, pois os campos não utilizados são eliminados.

Escrevendo o código

Qual nível as instruções são executadas e interpretadas pelo processador?

Exemplo de arquivo binário executável, representado em hexadecimal .

Embora a linguagem de máquina fosse a única disponível no início dos computadores, hoje é muito longo e tedioso para desenvolver em binário: é necessário passar por pelo menos uma linguagem intermediária.

Muitas linguagens de programação são transformadas em linguagem de máquina durante a compilação . Todos os programas executáveis ​​contêm pelo menos uma pequena parte em linguagem de máquina.

A linguagem mais fácil de converter em código de máquina é o assembler, porque tem quase as mesmas instruções. Assembler (ou linguagem assembly) difere de máquina para máquina, embora as instruções sejam muito semelhantes. Os idiomas de nível mais alto são traduzidos em assembly durante a compilação. As linguagens que usam uma máquina virtual passam por um bytecode que é convertido instantaneamente pela máquina virtual.

Exemplos

Processador MIPS

Como um exemplo específico, vamos examinar a arquitetura MIPS . Suas instruções são sempre de 32 bits. O tipo geral da instrução é dado pelos 6 bits mais significativos (em uma representação de 32 bits, os 6 à esquerda), que é chamado de campo op .

As instruções Type-J e Type-I são totalmente especificadas pelo campo op . As instruções do tipo R têm um campo adicional, funct , para determinar a natureza exata da operação. Os campos desses 3 tipos de instruções são:

   6      5     5     5     5      6 bits
[  op  |  rs |  rt |  rd |shamt| fonct]  type-R
[  op  |  rs |  rt | adresse/immédiat ]  type-I
[  op  |        adresse cible         ]  type-J

rs , rt e rd indicam operandos do tipo de registro; shamt indica um deslocamento ( quantidade de deslocamento ); e o endereço ou campo imediato contém um operando na forma de um valor.

Por exemplo, adicionar os registros 1 e 2 e colocar o resultado no registro 6 é codificado:

[  op  |  rs |  rt |  rd |shamt| fonct]
    0     1     2     6     0     32     décimal
 000000 00001 00010 00110 00000 100000   binaire

Carregue um valor da célula de memória 68 células após aquele apontado pelo registro 3 no registro 8:

[  op  |  rs |  rt | adresse/immédiat ]
   35     3     8           68           décimal
 100011 00011 01000  0000000001000100    binaire

Salte para o endereço 1025(a próxima instrução a ser executada é no endereço 1025):

[  op  |        adresse cible         ]
    2                 1025               décimal
 000010   00000000000000010000000001     binaire

Processador ARM

Os processadores da arquitetura ARM são um caso especial na medida em que todas as instruções são condicionais. Todos eles têm 32 bits e seus primeiros quatro bits indicam em que condições a instrução deve ser executada.

Veja também

  • Linguagem assembly de segunda geração
  • Linguagem de alto nível conhecida como terceira geração
  • Linguagem de quarta geração
  • Processador , o componente que executa a linguagem de máquina
  • Pipeline (arquitetura de processador)

Qual instrução É executada pelo processador?

O processador é o componente principal de um sistema de computação. É responsável pela realização das operações de processamento e de controle, durante a execução de um programa. Um programa para ser executado pelo processador deve ser formado por uma série de instruções de máquina.

O que são as instruções de um processador?

Conjunto de instruções (tradução de instruction set) 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 ...

Quais as operações executadas em um processador?

O papel da CPU pode ser comparado ao papel de um cérebro no funcionamento de um computador. Isto é, realiza operações lógicas, cálculos e processamento de dados.

Qual É a parte do processador que controla a execução de instruções?

São três as partes principais da CPU: Unidade de controle: busca a instrução da memória e decodifica-a. ALU (ou unidade aritmética e lógica): realiza operações aritméticas e booleanas. Registradores: memória rápida para guardar informações de controle, resultados intermediários.