Pergunta

Estou trabalhando em um gerenciador de inicialização em uma máquina x86.

Quando o BIOS copia o conteúdo do MBR para 0x7c00 e salta para esse endereço, existe um significado padrão para o conteúdo dos registros?Os registradores possuem valores padrão?

Eu sei que os registradores de segmento normalmente são definidos como 0, mas às vezes serão 0x7c0.E os outros registros de hardware?

Foi útil?

Solução

Este ambiente de execução inicial é altamente definido pela implementação, ou seja, a implementação do seu BIOS específico.Nunca faça suposições sobre o conteúdo dos registros.Eles podem ser inicializados com 0, mas também podem conter um valor aleatório.

de Wiki de desenvolvimento de sistema operacional, que é onde obtenho informações quando estou brincando com meus sistemas operacionais de brinquedo

Outras dicas

A melhor opção seria não assumir nada.Se eles tiverem significado, você descobrirá isso do outro lado quando precisar das informações que eles fornecem.

Indefinido, eu acredito?Acho que depende da placa-mãe e da CPU e deve ser tratado como aleatório para o seu próprio bem.

A aposta mais segura é assumir indefinido.

Sempre assuma indefinido, caso contrário você terá problemas graves se tentar portar arquiteturas.

Não há nada como a dor de portar código que pressupõe que tudo não inicializado será definido como zero.

A única coisa que sei que está bem definida é o estado do processador imediatamente após a reinicialização.

Para registro você pode encontrar que em Manual do desenvolvedor de software da Intel Vol 3 capítulo 8:"GESTÃO E INICIALIZAÇÃO DO PROCESSADOR" na tabela intitulada "Estados do processador IA-32 após inicialização, reinicialização ou inicialização"

Você sempre pode inicializá-los para começar com um estado conhecido.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top