커널 제작중..

intmain1202의 이미지

커널을 만들고있는데요 지금현재는 부트로더를 제작중입니다.

질문이 3가지 있는데요

1. 부트섹터, 부트로더와같은 디버깅장치가 없는경우 어떻게 디버깅을해서
오류를 찾을수 있나요?? 소스로만 봐야되는건 아닌것같구요

2. 현재 MASM으로 개발중인데 NASM에는 LGDT라는 명령이 존재하여 GDT를 등록할수있는데
MASM으로는 LGDT라는 명령이 존재하지않아서 못하고있는중입니다.
이경우 어떻게 해야될까요..

3. 현재 지금 어셈블리, C언어 이두개 초급자정도밖에안됩니다.. 2년전쯤에 리눅스, 윈도우서버, 네트워크, 리버싱엔지니어링, 시스템해킹, 웹해킹, 네트워크해킹 초급정도공부하였는데요..
나름 공부햇다고햇는데 OS부분으로 들어오니.. 완전 초짜네요 초짜..
원래 부트섹터나 부트로더같은경우 하드웨어에 의존적인 부분들이 많아서
소스가 비슷한건당연한건데.. 조금 제자신으로서 조금..그러네요 따라하는것같은느낌?
지금으로부터 한 6개월정도 남았는데..(삼성소프트웨어맴버쉽지원중) 22살입니다.. 페이징, 파일시스템 구현
간단한 테트리스정도 돌아갈수있는...그정도면될것같네요..
가능할까요.. 시스템 부분으로 지원을 하고싶어서 그럽니다...

swirlpotato의 이미지

1. emulator 중에 gdb stub이 내장되어 있는 것도 있다고는 있는데 막상 써본 것은 없네요. 전 무식하게 그냥 코드리딩으로 디버깅 했었습니다. qemu에 있다고 들었던 것 같은데 정확한 정보가 아니니 확인해보세요
2. MASM에서 LGDT를 번역하지 못하나요? 진짜로 못한다면 그 부분은 기계어 명령으로 써야겠네요... 아마 있을법한데요..
3. 운영체제에서 가장 x 같은게 하드웨어 의존적인게 아니라 동기화입니다. 그리고 부트로더 부분 코드는 비슷 할 수 밖에 없습니다. 하는게 뻔하거든요. 심지어 프로세서 회사에서 예제 코드도 주기도 합니다.

제 경험상 작성할때 꼭 이 순서를 따라야 하는 것은 아니지만 이대로 하시면 편할꺼예요
1. 인터럽트 관리
2. 타이머 관리
3. 태스크 관리
4. 메모리 관리
5. 화면
6. 파일시스템은 머나먼 뒤에 -_-;

intmain1202의 이미지

2.개발자를위한 os책에서 masn은 lgdt라는 명령이 없어서 기계어로 번역을 해서 썻는데요
궁금한게.. 기계어로 번역해놓으면 nasm이나 masm이나 똑같을것같아
lgdt명령을 디스어셈블해서 봣더니 이책의 소스랑 틀리군요;;
그럼 이 저자는 어떻게해서 이 lgdt라는 명령을 기계어로 뽑아냇을까요?..

tsgates의 이미지

macro lgdt
.emit xxx
.emit xxx
end macro

intmain1202의 이미지

잇군요.. ㅠ.ㅠ
감사합니다 한번써볼께욤!!

intmain1202의 이미지

macro lgdt
.emit xxx
.emit xxx
end macro

xxx이부분에 뭘넣어야되는건가요..

디스크릅터들을 정의해서 넣어야되는건 아닌것같은데;;

마이크로 msdn에 가봐도.. 안나오네요 구글링해도 이렇게 쓴 예를 못보겟네요;; ㅠ.ㅠ

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.