커널 제작중..
글쓴이: intmain1202 / 작성시간: 일, 2010/08/29 - 3:17오후
커널을 만들고있는데요 지금현재는 부트로더를 제작중입니다.
질문이 3가지 있는데요
1. 부트섹터, 부트로더와같은 디버깅장치가 없는경우 어떻게 디버깅을해서
오류를 찾을수 있나요?? 소스로만 봐야되는건 아닌것같구요
2. 현재 MASM으로 개발중인데 NASM에는 LGDT라는 명령이 존재하여 GDT를 등록할수있는데
MASM으로는 LGDT라는 명령이 존재하지않아서 못하고있는중입니다.
이경우 어떻게 해야될까요..
3. 현재 지금 어셈블리, C언어 이두개 초급자정도밖에안됩니다.. 2년전쯤에 리눅스, 윈도우서버, 네트워크, 리버싱엔지니어링, 시스템해킹, 웹해킹, 네트워크해킹 초급정도공부하였는데요..
나름 공부햇다고햇는데 OS부분으로 들어오니.. 완전 초짜네요 초짜..
원래 부트섹터나 부트로더같은경우 하드웨어에 의존적인 부분들이 많아서
소스가 비슷한건당연한건데.. 조금 제자신으로서 조금..그러네요 따라하는것같은느낌?
지금으로부터 한 6개월정도 남았는데..(삼성소프트웨어맴버쉽지원중) 22살입니다.. 페이징, 파일시스템 구현
간단한 테트리스정도 돌아갈수있는...그정도면될것같네요..
가능할까요.. 시스템 부분으로 지원을 하고싶어서 그럽니다...
Forums:
1. emulator 중에 gdb
1. emulator 중에 gdb stub이 내장되어 있는 것도 있다고는 있는데 막상 써본 것은 없네요. 전 무식하게 그냥 코드리딩으로 디버깅 했었습니다. qemu에 있다고 들었던 것 같은데 정확한 정보가 아니니 확인해보세요
2. MASM에서 LGDT를 번역하지 못하나요? 진짜로 못한다면 그 부분은 기계어 명령으로 써야겠네요... 아마 있을법한데요..
3. 운영체제에서 가장 x 같은게 하드웨어 의존적인게 아니라 동기화입니다. 그리고 부트로더 부분 코드는 비슷 할 수 밖에 없습니다. 하는게 뻔하거든요. 심지어 프로세서 회사에서 예제 코드도 주기도 합니다.
제 경험상 작성할때 꼭 이 순서를 따라야 하는 것은 아니지만 이대로 하시면 편할꺼예요
1. 인터럽트 관리
2. 타이머 관리
3. 태스크 관리
4. 메모리 관리
5. 화면
6. 파일시스템은 머나먼 뒤에 -_-;
lgdt
2.개발자를위한 os책에서 masn은 lgdt라는 명령이 없어서 기계어로 번역을 해서 썻는데요
궁금한게.. 기계어로 번역해놓으면 nasm이나 masm이나 똑같을것같아
lgdt명령을 디스어셈블해서 봣더니 이책의 소스랑 틀리군요;;
그럼 이 저자는 어떻게해서 이 lgdt라는 명령을 기계어로 뽑아냇을까요?..
macro lgdt .emit xxx .emit
macro lgdt
.emit xxx
.emit xxx
end macro
아하..
잇군요.. ㅠ.ㅠ
감사합니다 한번써볼께욤!!
xxx...
macro lgdt
.emit xxx
.emit xxx
end macro
xxx이부분에 뭘넣어야되는건가요..
디스크릅터들을 정의해서 넣어야되는건 아닌것같은데;;
마이크로 msdn에 가봐도.. 안나오네요 구글링해도 이렇게 쓴 예를 못보겟네요;; ㅠ.ㅠ
댓글 달기