728x90
os 본프로그램(본체?) 만들기
- 이전에 만든 어셈블리코드는 부트섹터
- 부트섹터를 제외한 실제 프로그램을 구현해보자
=> HLT하는 단순 프로그램
- 이름은 haribote.nas => nask로 어셈블하여 haribote.sys 만들기
TOOLPATH = ../z_tools/
MAKE = $(TOOLPATH)make.exe -r
NASK = $(TOOLPATH)nask.exe
EDIMG = $(TOOLPATH)edimg.exe
IMGTOL = $(TOOLPATH)imgtol.com
COPY = cp
DEL = rm
default :
$(MAKE) img
ipl.bin : ipl.nas Makefile
$(NASK) ipl.nas ipl.bin ipl.lst
haribote.sys : haribote.nas Makefile
$(NASK) haribote.nas haribote.sys haribote.lst
haribote.img : ipl.bin haribote.sys Makefile
$(EDIMG) imgin:../z_tools/fdimg0at.tek \
wbinimg src:ipl.bin len:512 from:0 to:0 \
copy from:haribote.sys to:@: \
imgout:haribote.img
img :
$(MAKE) haribote.img
run :
$(MAKE) img
$(COPY) haribote.img ..\z_tools\qemu\fdimage0.bin
$(MAKE) -C ../z_tools/qemu
install :
$(MAKE) img
$(IMGTOL) w a: haribote.img
clean :
-$(DEL) ipl.bin
-$(DEL) ipl.lst
-$(DEL) haribote.sys
-$(DEL) haribote.lst
src_only :
$(MAKE) clean
-$(DEL) haribote.img
메이크파일코드
- 부트섹터는 ipl.nas, 본 프로그램은 haribote.sys 로 출력
- 처음 512바이트는 ipl.bin으로 이후 영역에 haribote.sys 추가
- 출력 프로그램은 ipl.bin + haribote.sys = haribote.img
- make img 명령으로 파일 작성 완료
바이너리 에디터로 보기(어셈블리 코드와 매칭해서 보기)
- 맨 첫 두바이트는 매직 코드
- 다음 바이트는 DB 0x90
- 다음 바이트들은 "HARIBOTE"
- 다음 워드 DW 512 => 0x0200 => 표기는 00 02(리틀엔디언 방식)
...
본 프로그램은 어디에 있을까
- haribote.img에서 본 프로그램 haribote.sys 파일명은 0x002600 부근에서 보임
- 파일 내용은 0x004200이후에 나오는듯
본프로그램 동작 방법
1. 부트 섹터 로드
2. 부트섹터가 본프로그램 haribote.sys를 실행하면 됨
300x250
'컴퓨터과학 > 컴퓨터, OS' 카테고리의 다른 글
os만들기 - 17. 본체 동작시키기 (0) | 2020.08.02 |
---|---|
os만들기 - 16. 부트섹터에서 본프로그램 부팅 (0) | 2020.08.02 |
os만들기 - 14. 10실린더 만큼 읽기 (0) | 2020.08.02 |
os만들기 - 13. 18섹터 까지 읽어보기 (0) | 2020.08.01 |
os만들기 - 12. 에러 발생시 다시 읽기 (0) | 2020.08.01 |