O que são registradores?
Sex 27 Out 2006 10:18 |
- Detalhes
- Categoria: QuéQuéIsso?
- Atualização: Sábado, 05 Abril 2008 16:05
- Autor: vovó Vicki
- Acessos: 55685
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. |