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

+ Recent posts