이전 글에서 내가 무엇을 했느냐,,,
전에 쓴 글을보면서
헥스에디터로 이미지파일 만들고 qemu로 돌리기까지 했었다.
책 설명이 제대로 안되있는데 내가 어떻게 이걸했을까 생각하다보니 한빛미디어 자료실에
올라와있는 자료를 보고 했었던것같다
책 링크 걸어둔다.
https://m.hanbit.co.kr/store/books/book_view.html?p_code=B9833754652
OS 구조와 원리: OS 개발 30일 프로젝트
저자가 수년 동안 개발하여 완성한 OS를 독자와 함께 30일 프로젝트로 함께 만들어가는 내용이다. OS는 플로피디스크로도 구동할 수 있고 우리가 사용하고 있는 윈도우 XP와 같은 OS에서 에뮬레이
m.hanbit.co.kr
https://dw.hanbit.co.kr/exam/1482/
Index of /exam/1482
dw.hanbit.co.kr
아무튼 다음으로 할일은 어셈블리를 쓰려고한다.
헥스에디터대신 텍스트에디터로 만들고
nasm 대신 저자가 만든 nask로 어셈블하면 이전처럼 쓸수있다고한다.
오랜만에 인성훈련을 위해 어셈블리 그대로 쓰고
(이전 글 헥스 에디터 사진과 같이 보면 내용 동일함)
이미지 파일로 빌드
방금 nask로 빌드한 이미지가 정상적으로 실행된걸 확인했다!
뜻정리하면
DB : data byte 1바이트 쓰기
RESB : reserve byte 숫자만큼 0x00으로 채우기
어셈블리 코드 개선 결과
; 는 주석
DW : data word 워드로 18비트, 2바이트
DD : data double word 더블 워드로 4바이트
추가 용어 정리
FAT12 포맷 : 플로피 디스크 포멧 형식
부트섹터
- 플로피디스크 처음섹터, 플로피는 512바이트씩 읽음
- 플로피는 1,440kb로 512바이트로 나누면 2880섹터로 구성
* 부팅가능한지 보기위해 첫 섹터의 맨뒤 2바이트를 봄. 마지막이 55 AA가 아니면 부팅할수 없다고 판단.
=>이게 무슨소린가 싶어서 헥스에디터로보니 첫 섹터 512바이트 맨 끝부분에 55 AA가 들어가있음
IPL : initial program loader 초기 프로그램 읽기 장치, 보통 OS 로드하기위한 프로그램 위치
부트 : 부트스트랩의 약어, 자신의 힘으로 이룬다는 의미
'컴퓨터과학 > os' 카테고리의 다른 글
OS30 - 4. 부트섹터 분할시키고 make 사용하기 (0) | 2024.04.05 |
---|---|
OS30 - 3. 어셈블리 다루기 (0) | 2024.04.05 |
OS30 - 1. 시작 : 바이너리 에디터로 부팅 이미지 만들기 (0) | 2024.04.04 |
navilos - 19. 동기화 (0) | 2022.08.25 |
navilos - 18. 메시징 (0) | 2022.08.25 |