문제

저는 x86 머신에서 부트로더 작업을 하고 있습니다.

BIOS가 MBR의 내용을 0x7c00에 복사하고 해당 주소로 점프할 때 레지스터 내용에 대한 표준 의미가 있습니까?레지스터에 표준 값이 있습니까?

세그먼트 레지스터는 일반적으로 0으로 설정되지만 때로는 0x7c0이 되는 경우도 있다는 것을 알고 있습니다.다른 하드웨어 레지스터는 어떻습니까?

도움이 되었습니까?

해결책

이 초기 실행 환경은 구현이 고도로 정의되어 있으며, 이는 특정 BIOS의 구현을 의미합니다.레지스터의 내용에 대해 어떠한 가정도 하지 마십시오.0으로 초기화될 수 있지만 임의의 값이 포함될 수도 있습니다.

~로부터 OS 개발 위키, 장난감 OS를 가지고 놀 때 정보를 얻는 곳입니다.

다른 팁

최선의 선택은 아무것도 가정하지 않는 것입니다.그 의미가 있다면, 그 정보가 제공하는 정보가 필요할 때 상대방에게서 그 의미를 찾을 수 있을 것입니다.

정의되지 않은 것 같아요?메인보드와 CPU에 따라 다르며 본인의 이익을 위해 무작위로 처리해야 한다고 생각합니다.

가장 안전한 방법은 정의되지 않았다고 가정하는 것입니다.

항상 정의되지 않았다고 가정합니다. 그렇지 않으면 아키텍처를 포팅하려고 하면 나쁜 문제에 직면하게 됩니다.

초기화되지 않은 모든 것이 0으로 설정될 것이라고 가정하는 코드 포팅만큼 고통스러운 것은 없습니다.

내가 잘 정의한 것으로 아는 유일한 것은 재설정 직후의 프로세서 상태입니다.

기록을 위해 당신은 찾을 수 있습니다 저것 ~에 인텔의 소프트웨어 개발자 매뉴얼 3권 8장:"전원 켜기, 재설정 또는 초기화 후 IA-32 프로세서 상태"라는 제목의 표의 "프로세서 관리 및 초기화"

언제든지 직접 초기화하여 알려진 상태로 시작할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top