[OS개발] 3일차 - C언어 도입! 우워어어엉! 3일차 3일차는 32bit 모드로의 전환과 C언어를 활용하여 코드를 짜기 시작했다(감격...) # 우선 IPL외에 좀더 많은 코드를 읽기 위해 더 많은 데이터를 읽기로 하였다. 플로피 디스크는 실린더, 헤드, 섹터로 영역이 나뉘어 있는데, 80 실린더(0~79), 2 헤드(0,1), 18섹터(1~18)로 이루어져 있다. 우선 10실린더까지 메모리에 로드하는 어셈블리어 코드를 짰다. ; haribote-ipl ; TAB=4 CYLSEQU10; 어디까지 Read할까 ORG0x7c00; 이 프로그램이 어디에 Read되는가 ; 이하는 표준적인 FAT12 포맷 플로피 디스크를 위한 기술 JMPentry DB0x90 DB"HARIBOTE"; boot sector의 이름을 자유롭게 써도 좋다(8바이트) DW512; .. 더보기 [OS개발] 2일차 - 어셈블러랑 말문이 트였다. 2일차 뭔가 어렴풋이 느낌만 왔던 1일차. 2일차는 본격적으로 어셈블리어를 익히고 Makefile을 쓰는 법을 배웠다. # 일단 어셈블리어. 확실히 기계어에 가까운 만큼 CPU를 다루는 언어이기에 CPU의 저장 공간인 레지스터에 대해 알아야 하겠더라. 아직까진 16bit 기준이기에언제 32bit간다냐 EAX 같은 레지스터가 아닌 다음의 14가지 16bit 레지스터가 소개 되었다.AX (accumulator) : 누적 연산기 CX (counter) : 카운터 DX (data) : 데이터 BX (base) : 기초, 기점※ 위의 4 레지스터는 AL (AX LOW), AH (AX HIGH)등으로 나누어 8bit로 쓰는 것이 가능하다. SP (stack pointer) : 스택용 포인터 BP (base poin.. 더보기 [OS개발] 1일차 - 그럼, 부팅이나 시켜볼까? 1일차(시작!)1일차에는 어떻게든 부팅이 되는 디스크를 만들어 보았다. 책에서 시키는대로 고분고분 바이너리 에디터를 사용해서 한땀한땀 정성들여 부팅 이미지를 만들었다.해서 에뮬레이터로 돌리면 이렇게 부팅이 성공한다.에뮬레이터는 qemu(...)를 사용하고 예제의 bat 파일 덕분에 쉽게 인스톨 및 실행이 콘솔에서 가능하다. 개발 과정에서 사용하는 어셈블러는 NASM이라는 어셈블러를 기반으로 만든 nask 라는 필자의 커스텀 어셈블러로, 확장자명은 nas. 최적화를 손수 하셨단다. 뭔가 문법이 인텔이나 AMD문법이랑 달라보이지만 어셈블리어를 배운적이 없기에 그냥 그런가보다- 하고 진행하였다.그리고 첫 어셈블리어 코드 ; hello-os ; TAB=4 ; 이하는 표준적인 FAT12 포맷 플로피 디스크를 위한.. 더보기 이전 1 2 3 4 5 6 다음