2012-03-03 2 views
4

컴퓨터 아키텍처 프로젝트의 경우 간단한 부팅 작업을 수행하기 위해 부트 가능한 코드를 작성하고 싶습니다 (너무 복잡하지 않다면 뱀 게임을 생각했습니다). C 프로그램에 제어권을 넘겨주는 작은 부트 로더를 작성하는 것이 너무 힘들지 않아야한다고 생각했지만 정확한 정보를 찾을 수 없습니다.부트 로더 작성을위한 고급 어셈블리 안내서

보호 모드를 올바르게 설명하는 x86 어셈블리의 고급 가이드를 찾고 있는데 (전환해야하는지, 내 첫 번째 본능인지는 알 수 없다), 컴퓨터 부팅 방법, 키보드에서 읽기 및 화면에 인쇄.

어셈블리로 작성하고 gcc를 전달하여 작은 프로그램을 작성하면 부팅 및 인터페이싱 정보 만 있으면됩니다. 책을 포함하여 모든 정보가 평가됩니다.

+1

내 지식에 따르면 OSDev 및 관련 정보 웹 사이트는 http://wiki.osdev.org입니다. 그리고 [이 리소스] (http://www.brokenthorn.com/Resources/OSDev8.html)는 보호 모드에 대해 설명 할뿐만 아니라 여러분의 길을 인도 할 것입니다. – sransara

답변

3

나는 this 웹 사이트를 권장합니다. 당신이 알아야 할 모든 것을 (특히 "소개"범주에서) 찾을 수 있습니다.

보호 모드로 전환하지 않으면 화면에 인쇄하거나 키보드에서 읽는 등의 BIOS 인터럽트를 사용할 수 있습니다 (예 : interrupt 0x10, function 0x0e). 부트 로더와 별도로 다른 프로그램을 사용하려면 수동으로 메모리에로드해야합니다. 하드 디스크 (또는 하드 디스크를 에뮬레이트하는 pendrive)에서 읽는 BIOS 기능이 있지만 파일 시스템을 직접 처리해야합니다. 아마도, 귀하의 경우, 최선의 해결책은 아무 것도 사용하지 않고 고정 주소에 작성된 해당 추가 프로그램을 가지고 부트 로더가 하드 코딩 된 위치에서로드되도록하십시오.

또한 gcc로 컴파일 된 코드를 리얼 모드로 실행하려면 .code16gcc 지시문을 사용해야합니다. 그것은 가스 genereate 코드가 32 비트 기계에서 16 비트 리얼 모드로 실행될 수있게합니다.

2

Here는 언젠가 전에 나온 링크입니다. 흥미 로워서 즐겨 찾기에 추가 했으므로 아마도 도움이 될 것입니다.