Processadores Intel 64 começam, após o reset, em um estado associado ao modo real do Intel 8086 — uma condição de inicialização, não uma emulação completa do chip. A explicação oficial da Intel sobre o X86S descreve essa herança; ela também ajuda a entender por que o firmware e a inicialização de outros núcleos ainda lidam com etapas de compatibilidade antigas.

O que significa iniciar em modo real

Modo real é o estado de execução associado ao modelo de endereçamento do Intel 8086. Na conta convencional, o processador combina um segmento deslocado quatro bits à esquerda com um deslocamento: (segmento << 4) + deslocamento. Esse modelo de 16 bits corresponde a um espaço nominal de 1 MiB.

O endereço de busca após o reset dos processadores x86 modernos é outra coisa. Adam Conway, do XDA Developers, relata que os manuais de Intel e AMD indicam o endereço FFFFFFF0h, perto do limite de 4 GiB, e descreve a base oculta especial do segmento de código nesse estado. A conta convencional de segmento e deslocamento, portanto, não descreve por si só esse primeiro acesso. A Intel afirma que seus projetos Intel 64 saem do reset no mesmo estado que o 8086; a reportagem de Conway também cita a documentação da AMD sobre a entrada inicial em modo real. A análise de Conway registra ainda que o firmware avança rapidamente para modos posteriores.

Isso não significa que o UEFI elimine o comportamento de reset do processador. UEFI define a interface de firmware e o caminho de inicialização; não substitui, por si só, o estado em que a CPU começa. Em uma máquina com UEFI, o carregador do sistema operacional também não precisa executar em modo real, embora o firmware parta do estado de reset e faça a transição.

Os segmentos guardam mais do que seus valores visíveis

Tutorial em inglês da Daedalus Community: configuração da GDT e transição de modo real para modo protegido

Os registradores de segmento têm seletores visíveis e atributos internos que não aparecem nesses valores. A explicação técnica da OS/2 Museum detalha que carregar um segmento pode atualizar o seletor e a base oculta, enquanto limites e atributos podem continuar refletindo descritores carregados anteriormente. Por isso, modo real não é simplesmente uma CPU moderna reproduzindo por completo o funcionamento do 8086: o estado interno dos segmentos torna a transição entre modos mais sutil.

Essa diferença importa ao alternar entre modo protegido e modo real. Em uma discussão sobre um caso específico em QEMU, o participante nullplan, no OSDev.org, explicou que um salto distante sozinho não limpa os atributos de segmento retidos. A resposta recomenda carregar descritores de código e dados de 16 bits ainda em modo protegido antes de concluir a transição. A discussão técnica trata daquele problema de sistema operacional experimental, não de uma receita universal.

Por que a partida de outros núcleos preserva código de 16 bits

Na inicialização tradicional de um núcleo adicional, o processador recebe primeiro um sinal INIT e depois um SIPI, que aponta para o código de início abaixo de 1 MiB. O núcleo de aplicação começa em modo real e executa uma rotina de transição antes de entrar nos modos usados pelo sistema operacional. É uma tarefa distinta da inicialização do núcleo principal pelo firmware.

Os rastreamentos de Adam Conway mostram essa dependência em contextos concretos. Em um teste com QEMU e OVMF, ele identificou 18 endereços distintos de instruções em modo real no caminho comum do firmware antes da mudança para modo protegido. Em outro teste, com Linux 6.18 e dois núcleos virtuais no QEMU, contou 67 instruções de 16 bits na rotina de inicialização do segundo núcleo. Os números correspondem a testes diferentes, não a uma medida universal. Conway também identificou, na compilação 10.0.28000.3086 do Windows 11, as rotinas HalpRMStub, HalpPMStub e HalpLMStub associadas às transições de modo.

O que o X86S teria mudado

Em 2023, a Intel propôs o X86S, uma arquitetura x86 somente de 64 bits. O desenho previa que a CPU começasse diretamente em modo paginado de 64 bits e substituiria a inicialização tradicional de outros núcleos baseada em SIPI por um mecanismo de 64 bits.

Projeto de inicializaçãoEstado inicialPartida de núcleos adicionais
x86 documentado atualEstado de reset associado ao 8086, com início em modo realINIT seguido de SIPI; o núcleo adicional começa em código de modo real abaixo de 1 MiB
X86S propostoInício direto em modo paginado de 64 bitsMecanismo de 64 bits proposto para substituir a partida baseada em SIPI

Uma arquitetura sem esses modos precisaria substituir as etapas de transição e os mecanismos de inicialização que dependem deles. A Intel também descreveu um compromisso de longa data com a compatibilidade de software; para sistemas operacionais legados de 64 bits, a proposta previa suporte por virtualização. Em dezembro de 2024, a empresa confirmou que decidiu não levar o X86S adiante após receber contribuições do ecossistema.