terça-feira, 15 de janeiro de 2013

Trabalho de pesquisa sobre registos de dados, registos de segmentos, registos de apontador de pilha e Índice

Registos de dados
Os 8 GPRs, ou Registos de Uso Geral, são os seguintes (por ordem de introdução na pilha ao executar a instrução PUSHAD):
  • EAX - Acumulador. Usado em operações aritméticas.
  • ECX - Contador. Usado em loops.
  • EDX - Registo de Dados. Usado em operações de entrada/saída e em multiplicações e divisões. É também uma extensão do Acumulador.
  • EBX - Base. Usado para apontar para dados no segmento DS.
  • ESP - Apontador da Pilha (Stack Pointer). Aponta para o topo da pilha (endereço mais baixo dos elementos da pilha).
  • EBP - Apontador da base do frame. Usado para aceder a argumentos de procedimentos passados pela pilha.
  • ESI - Índice da fonte de dados a copiar (Source Index). Aponta para dados a copiar para DS:EDI.
  • EDI - Índice do destino de dados a copiar (Destination Index). Aponta para o destino dos dados a copiar de DS:ESI.


Estes 8 registos têm 32 bits cada um e dizem-se Estendidos. 
Os 16 bits de ordem mais baixa de cada um dos registos podem ser acedidos através das versões não estendidas destes. As versões de 16 bits têm os mesmo nomes que as de 32 bits, com excepção de a letra E ser retirada (ex: EAX → AX). As versões estendidas dos registos não existem em gerações anteriores à 80386 ― a primeira geração de processadores 32 bits da arquitectura x86.
As versões não estendidas dos quatro primeiros GPRs dividem-se ainda em dois grupos de 8 bits cada um. O octeto (byte) de ordem mais alta é acedido trocando o X por um H(exemplo: AX → AH), e o octeto de ordem mais baixa trocando o X por um L (ex: AX → AL).



Registos de segmento
Há 6 registos de segmento.
  • CS - Segmento do Código.
  • DS - Segmento de Dados.
  • ES - Segmento com dados extra.
  • FS - Segmento com mais dados.
  • GS - Segmento com ainda mais dados.
  • SS - Segmento da Pilha (Stack).



Sem comentários:

Enviar um comentário