Assembly x86/Modos de operação

A compatibilidade com versões anteriores de software tem sido desde o princípio a principal fonte de decisões de design da arquitetura x86. Quando a Intel desenhou o 8086, utilizou nele um modelo de memória que permitia que os programas desenvolvidos para microprocessadores anteriores da Intel pudessem ser facilmente adaptados para correr na nova arquitetura.

Posteriormente à introdução do 8086, as alterações de fundo à arquitetura têm sido isoladas por meio de modos de operação. Define-se modo de operação como os elementos do estado interno do processador que afetam o comportamento da execução da totalidade ou de parte das instruções. Esse estado interno é atingido por execução de uma sequência de instruções.

Seja C o comportamento do processador após a operação de Reset, ou seja, quando o processador acabou de se inicializar. Neste caso, C representa o comportamento do processador 8086. F1 e F2 são modos de operação, e f1 e f2 as sequências de instruções que é necessário executar para que o processador atinja os estados F1 e F2, respectivamente. Representemos por o comportamento resultante de aplicar o modo de operação F ao comportamento C. P1 é um programa que é a composição de com um programa que assume , e P2 um programa que é a composição de com um programa que assume .

  • Se o processador suporta o modo de operação F1 mas não o modo F2, a execução de P2 vai falhar porque o processador não vai reconhecer f2. No entanto, a execução de P1 vai ser bem sucedida, uma vez que f1 é reconhecida pelo processador.
  • Se o processador suporta os modos de operação F1 e F2, a execução de P1 vai ser bem sucedida, uma vez que f1 vai ser reconhecida. Por sua vez, o suporte ao modo F2 é silenciosamente ignorado, já que o programa P1 ignora a sua existência. Em contrapartida, uma vez que a sequência f2 não é executada, as modificações patentes em F2 não afetam a execução de P1.

A arquitetura x86 define 5 modos de operação oficiais.

Modo real editar

Modo protegido editar

Modo de 8086 virtual editar

Modo longo editar

Modo de compatibilidade editar

Modo de 64-bits editar