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.

Leia mais...

Informática Numaboa - Tutoriais e Programação

Arquitetura Intel

Sex

19

Jun

2009


11:01

(12 votos, média 5.00 de 5) 


Nível intermediário A arquitetura dos processadores da família Intel é formada por registradores de uso geral, registradores de segmento, registradores de status, ponteiros e registradores de pilha.

Registradores de uso geral

Registradores de Uso Geral
16 bits 32 bits    
AX EAX AH | AL Acumulador
BX EBX BH | BL Base
CX ECX CH | CL Contador
DX EDX DH | DL Dados

Os usos mais comuns dos Registradores de Uso Geral são:

EAX, AX, AH, AL: Chamado de registrador Acumulador. É usado para acessar portas de entrada/saída, operações aritméticas, chamada de interrupções, etc.

EBX, BX, BH, BL: Chamado de registrador Base. É usado como um ponteiro base para acessar a memória. Recebe alguns valores de retorno.

ECX, CX, CH, CL: Chamado de registrador Contador. É usado como contador de loop e para shifts. Recebe alguns valores de interrupções.

EDX, DX, DH, DL: Chamado de registrador de Dados. É usado para acessar portas de entrada/saída, operações artiméticas e algumas chamadas de interrupção.

Registradores de segmento

Registradores de Segmento
CSSegmento de Código
DSSegmento de Dados
SSSegmento de Pilha (Stack)
ESSegmento Extra
FSSegmento Extra (acima de 386)
GSSegmento Extra (acima de 386)

Os usos mais comuns dos Registradores de Segmento são:

CS: Contém o segmento de Código no qual o programa está rodando. Mudar seu valor pode pendurar o computador.

DS: Contém o segmento de Dados que o programa acessa. Mudar seu valor pode resultar em dados errados.

ES, FS, GS: Estes registrados de segmento extras estão disponíveis para endereçamento distante (far pointer) como memória de vídeo e outras.

SS: 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.

Registradores de ponteiros e de pilha

Registradores de Ponteiros
16 bits 32 bits  
SI ESI Índice de Origem (Source Index)
DI EDI Índice de Destino (Destination Index)
IP   Ponteiro de Instrução
Registradores de Pilha
16 bits 32 bits  
SP ESP Ponteiro da Pilha (Stack Pointer)
BP EBP Ponteiro da Base da Pilha (Base Pointer)

Uso mais comum dos Índices e Ponteiros é:

ES:EDI EDI DI: Registrador do Índice de Destino. É usado para cópia de strings, cópia e configuração de arrays de memória e para endereçamento distante (far pointer) com ES.

DS:ESI EDI SI: Registrador de Índice de Origem. É usado para cópia de strings de de arrays de memória.

SS:EBP EBP BP: Registrador ponteiro da Base da Pilha. Contém o endereço base da pilha.

SS:ESP ESP SP: Registrador ponteiro da Pilha. Contém o endereço do topo da pilha.

CS:EIP EIP IP: Ponteiro do Índice. Contém o deslocamento (offset) da próxima instrução. Pode ser apenas lido.

Registradores de status (Flags)

11 10 0F 0E 0D 0C 0B 0A 09 08 07 06 05 04 03 02 01 00
 |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |--- CF Carry Flag
 |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |------ 1
 |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |--------- PF Flag de Paridade
 |  |  |  |  |  |  |  |  |  |  |  |  |  |  |------------ 0
 |  |  |  |  |  |  |  |  |  |  |  |  |  |--------------- AF Flag Auxiliar
 |  |  |  |  |  |  |  |  |  |  |  |  |------------------ 0
 |  |  |  |  |  |  |  |  |  |  |  |--------------------- ZF Flag Zero
 |  |  |  |  |  |  |  |  |  |  |------------------------ SF Flag de Sinal
 |  |  |  |  |  |  |  |  |  |--------------------------- TF Trap Flag (Single Step)
 |  |  |  |  |  |  |  |  |------------------------------ IF Flag de Interrupção
 |  |  |  |  |  |  |  |--------------------------------- DF Flag de Direção
 |  |  |  |  |  |  |------------------------------------ OF Flag de Overflow
 |  |  |  |  |  |---------------------------------------
 |  |  |  |  |------------------------------------------ IOPL Nível de Privilégio I/O (286+)
 |  |  |  |--------------------------------------------- NT Nested Task Flag (286+)
 |  |  |------------------------------------------------ 0
 |  |--------------------------------------------------- RF Resume Flag (386+)
 |------------------------------------------------------ VM - Flag de Modo Virtual (386+)

Registradores de status (especiais)

Registradores de Status - Registradores Especiais (386+)
CR0 Registrador de Controle 0 DR0 Registrador de Debug 0
CR2 Registrador de Controle 2 DR1 Registrador de Debug 1
CR3 Registrador de Controle 3 DR2 Registrador de Debug 2
    DR3 Registrador de Debug 3
TR4 Registrador de Teste 4 DR6 Registrador de Debug 6
TR5 Registrador de Teste 5 DR7 Registrador de Debug 7
TR6 Registrador de Teste 6    
TR7 Registrador de Teste 7    

Registradores de status MSW (Machine Status Word - 286+)

31  30-5  4  3  2  1  0
 |    |   |  |  |  |  |--- PE Protection Enable
 |    |   |  |  |  |------ MP Math Present
 |    |   |  |  |--------- EM Emulação
 |    |   |  |------------ TS Task Switched
 |    |   |--------------- ET Tipo de Extensão
 |    |------------------- Reservado
 | ----------------------- PG Paginação

Bit 0 - PE (Protection Enable): troca o processador entre modo real e protegido

Bit 1 - MP (Math Present): controla o funcionamento da instrução WAIT

Bit 2 - EM (Emulation): indica quais funções do coprocessador devem ser emuladas

Bit 3 - TS (Task Switched): setado e interrogado pelo coprocessador em tarefas de switches e quando interpretando instruções do coprocessador

Bit 4 - ET (Extension Type): indica o tipo do coprocessador no sistema

Bits 5 a 30 - Reservados

Bit 31 - PG (Paging): indica se o processador usa tabelas page para traduzir endereços lineares em endereços físicos

Override de segmentos

As operações ES:, DS:, CS: e SS: são prefixos de "segment override". Por exemplo, o código operacional para ES: é 26. Desta forma, para obter MOV ES:[DI],AL, procura-se o código operacional para MOV [DI],AL (8805) e precede-se o mesmo com 26 (268805), transformando-o em MOV ES:[DI],AL.

Registrador Segmento Default Overrides Válidos
BP SS DS, ES, CS
SI ou DI DS ES, SS, CS
Strings DI ES Nenhum
Strings SI DS ES, SS, CS

Registradores mal documentados

Existem registradores nos processadores 80386 e acima que não foram bem documentados pela Intel. Estes são divididos em registradores de controle, de debug, de teste e de segmentação no modo protegido. Ao que tudo indica, os registradores de controle, juntamente com os registradores de segmentação, são usados na programação em modo protegido.

Os registradores de teste foram tirados a partir do Pentium. Os registradores de controle são os CR0 a CR4, registradores de debug são os DR0 a DR7, os registradores de teste são os TR3 a TR7 e os registradores de segmentação no modo protegido são o GDTR (Global Descriptor Table Register), o IDTR (Interrupt Descriptor Table Register), o LDTR (Local DTR) e o TR.



игровые автоматы bladeпосуда купитьлобановский александр отзывымоноподникас официальный сайткакой самыйcom mfxbroker

Informações adicionais