A Aldeia Numaboa ancestral ainda está disponível para visitação. É a versão mais antiga da Aldeia que eu não quis simplesmente descartar depois de mais de 10 milhões de pageviews. Como diz a Sirley, nossa cozinheira e filósofa de plantão: "Misericórdia, ai que dó!"

Se você tiver curiosidade, o endereço é numaboa.net.br.

O que são registradores?

Sex

27

Out

2006


10:18

(34 votos, média 4.59 de 5) 


Nível Intermediário

Na arquitetura de computadores, um registrador é uma pequena porção de memória localizada no processador central. Os registradores permitem acessos muito rápidos a dados e são usados para aumentar a velocidade de execução de programas. A maioria das modernas arquiteturas de computadores operam transferindo dados da memória principal para os registradores, onde estes são processados e o resultado é devolvido à memória principal - é a chamada arquitetura de carregamento-armazenamento.

Os registradores estão no topo da hierarquia da memória e propiciam ao sistema o modo mais rápido de acessar dados. O termo geralmente é usado para designar apenas o grupo de registradores que podem ser utilizados diretamente para entradas ou saídas através de instruções definidas no conjunto de instruções do processador. O conjunto de instruções da arquitetura x86, por exemplo, define um conjunto de 8 registradores de 32 bits, mas uma CPU deste tipo possui mais registradores do que apenas estes.

Categorias de Registradores

Os registradores são medidos pelo número de bits que podem conter. Atualmente as máquinas possuem registradores de 32 ou 64 bits. De acordo com o conteúdo, os registradores podem ser classificados em registradores de uso geral, de segmento, de ponteiro e de estado.

Registradores de uso geral

Registrador Aplicação Uso mais comum
EAX Acumulador Acessar portas de entrada/saída, realizar operações aritméticas, fazer chamada de interrupções, etc.
EBX Base Ponteiro base para acessar a memória. Recebe alguns valores de retorno.
ECX Contador Contador para loops e deslocamentos (shift). Recebe alguns valores de interrupção.
EDX Dados Acessar portas de entrada/saída, realizar operações aritméticas, fazer algumas chamadas de interrupção.

Registradores de segmento

Registrador Aplicação Uso mais comum
CS Segmento de Código Contém o segmento de código no qual o programa está rodando. Mudar seu valor pode pendurar o computador.
DS Segmento de Dados Contém o segmento de dados que o programa acessa. Mudar seu valor pode resultar em dados errados.
SS Segmento da Pilha (Stack) Contém o segmento de pilha usado pelo programa. Algumas vezes tem o mesmo valor que DS. Mudar seu valor pode levar a resultados imprevisíveis, geralmente relacionados aos dados.
ES, FS, GS Segmentos Extras Estes registradores de segmento estão disponíveis para endereçamentos distantes (far pointer) como, por exemplo, memória de vídeo.

Registradores de ponteiro

Registrador Aplicação Uso mais comum
ESI Índice de Origem É usado para copiar strings de arrays da memória.
EDI Índice de Destino É usado para copiar strings, copiar e configurar arrays de memória e, juntamente com ES, para endereçamento distante (far pointer).
EBP Base da Pilha Contém o endereço da base da pilha (stack).
ESP Ponteiro da Pilha Contém o endereço do topo da pilha.

Registradores de estado

Um registrador de estado é uma coleção de bits que indicam o estado de várias operações matemáticas. Os bits são comumente chamados de flags (bandeiras) e são usados durante testes de condição e ramificação de programas. A número de bits, sua ordem e a interpretação dada a eles depende de cada processador. Nos processadores Intel as flags mais importantes do principal registrador de estado têm o seguinte significado:

Número Nome Uso
0 CF - Carry Flag É a flag do "vai um" numa soma ou do "empresta um" numa subtração feito no bit mais significativo da ALU (unidade aritmético-lógica).
1 - Contém o valor 1.
2 PF - Parity Flag Flag de Paridade: indica se o número de bits de um resultado é par ou ímpar.
3 - Contém o valor 0.
4 AF - Auxiliary Flag Flag Auxiliar.
5 - Contém o valor 0.
6 ZF - Zero Flag Indica se o resultado foi zero.
7 SF - Sign Flag Indica se o resultado é positivo ou negativo.
8 TF - Trap Flag -
9 IF - Interruption Flag Indica se houve uma solicitação de interrupção.
10 (0A) DF - Direction Flag Usada em todas as instruções que usam o prefixo REP (repetição), como MOVS, MOVSD, MOVSW, etc.
11 (0B) OF - Overflow Flag Indica quando o resultado de uma operação precisa de mais bits do que os disponíveis no registrador.

Informações adicionais