Welcome to My World (www.dgmayor.com)

2022/06 25

7. boot loader 작성하기

OS [32bit] 부트로더 작성하기 by 올리고당 2021. 7. 27. 목차 전체 코드 BIOS 인터럽트 코드 설명 실제 동작 전체 코드 이전 코드에서 삭제된 부분은 line 20 ~ 41입니다. 추가된 부분은 아래 사진에서 // 로 표시된 line 22 ~ 37 부분입니다. 추가된 코드의 모든 부분이 int 13h 명령어( line 33 )에 대해 준비하고, 그 결과에 대한 처리를 하는 과정입니다. BIOS 인터럽트 int 13h 명령어는 BIOS에서 제공하는 인터럽트 중 하나입니다. 인터럽트란, 특정 외부 입력이 들어오면 진행 중이던 절차( main program )를 잠시 멈추고, 외부 입력에 대응하는 절차( ISR : Interrupt Service Routine )를 수행한 후, 멈춘 부분(..

6. boot sector에서 프로그램 꺼내기 2

곧 부트로더가 될 프로그램 일단 해봅시다! boot1.asm 파일을 다음과 같이 작성해주세요. boot1.asm 코드 설명 Q1. mov ds, cs는 불가능 한가? : CPU 내부 구조적인 문제로, 세그먼트 레지스터의 값을 바꾸려면, 범용 레지스터를 거쳐야 합니다. - 인텔 매뉴얼 vol.1 6-16page 6.3.1.1 절 참고. Q2. 비디오 메모리 세그먼트 16비트 세그먼트:오프셋 방식으로 표현할 수 있는 주소는 0000:0000 ~ FFFF:FFFF입니다. 이 중 모두를 RAM이 사용하는 것이 아니라, 다른 주변장치에도 주소가 할당되어 있습니다. 어느 기기에 어느 주소가 할당되었는지에 대한 분포를 나타낸 것을 메모리 맵이라 합니다. 메모리 맵 ( 참고도서 36페이지 발췌 ) 실습 코드에서는 컬러..

5. boot sector에서 프로그램 꺼내기 1

코드를 이해하기 위한 레지스터 n-bit 레지스터란, n자리의 이진수를 저장할 수 있는 하드웨어입니다. CPU에 내장되어 있습니다. 포인터 레지스터 ip : 다음에 실행할 명령어를 가리키는 포인터 레지스터 ( instruction pointer ). 바로 다음 주소의 명령어를 가리키고 있습니다. 범용 레지스터 ax : 주 누산기(primary accumulator)인 ax는 주로 입출력과 대부분의 산술 연산에 쓰입니다. eax(extended ax)의 하위 16비트. ax의 상위 8비트를 ah, 하위 8비트를 al 이라고도 합니다. cx : 카운트 레지스터. 루프 반복의 횟수 혹은 쉬프트 연산 횟수를 저장하는 데에 쓰입니다. ecx(extended cx)의 하위 16비트. cx의 상위 8비트를 ch, 하..

4. bootStrap?

부트스트랩이 뭔가요? OS 분야에서 부트스트랩은 CPU에 전원이 들어오고 나서, OS 커널이 로드되기까지 외부 입력 없이 스스로 진행하는 일련의 과정을 뜻합니다. 다른 분야에서도 각각 다른 의미로 쓰이는 용어이니, 혼동 없으시길 바랍니다. 부트스트랩 과정 일반적인 PC의 부트스트랩 과정을 살펴보겠습니다. reset vector : CPU가 전원이 들어오면, 가장 먼저 확인하는 장소. 이곳에서 첫 명령어를 확인합니다. 롬처럼 각인된( hard-coded ) 레지스터가 있어 전원이 들어오지 않더라도 저장된 명령어 값이 유지됩니다. jump 명령어를 통해 바이오스( BIOS )로 실행 흐름을 넘겨줍니다. BIOS ( Basic Input/Output System ) : 사용하는 하드웨어를 점검하고, OS 커널..

3. nasm 소개

nasm이 뭔가요? 어셈블리어를 기계어로 바꾸어주는 '어셈블러'이자 '역어셈블러'입니다. 마치 C언어 코드를 기계어로 바꿔주는 컴파일러처럼 어셈블리 코드를 기계어로 바꾸어줍니다. 또, nasm을 이용해 기계어 코드를 어셈블리 코드로 바꿀 수 있습니다. nasm 설치하기 사이트에 접속합니다. https://www.nasm.us/ NASM Latest version Stable 2.15.05 History Builds List Snapshots Latest, List For users of RPM-based Linux distributions (e.g. Fedora, Red Hat, SUSE, ...), you can download the official NASM builds using dnf or yum..