딱딱하지 않는 소6이 VirtualBox에서 「30일로 할 수 있다! OS 자작 입문」을 이루는 이야기. 첫날
4969 단어 CVirtualBox어셈블러OS 자작OS 자작 입문
기사를 든 2일째에는 멈춰 버린 이 시리즈. 하지만 나는 포기하지 않습니다. 절대로 돌아옵니다. 절대로 다음 기사를 써서 30일째까지 노력하겠습니다. 조금 기다려주세요. (12월 중 리뉴얼하고 싶다)
그리고 실은 9일째 정도 지금은 완성하고 있었습니다만 별로 구조를 알고 있지 않습니다()
자기소개
만나서 반갑습니다. 여러 가지에 도전해 에러로 포기해 버리는 소6의 tatsu입니다. 문장의 곳마다 잘못되어 있다고 생각합니다만 감사합니다.
환경 구축
VirtualBox htps //w w. 오 c. 이 m/테 ch네와ぉrk/jp/세르ゔぇr-s토레게/ゔぃr ㅇㅎㅎㅎㅎㅎㅜㅜㅜㅜㅜㅜ/ HTML
바이너리 편집기 Hex Fiend htps://リぢくぉうsふぃsh. 코 m / 헤 x 후엔 d /
VirtualBox에서 시작할 때의 방법은 여기에서 자세히 쓰고 있으므로 여기를 참조하십시오.
mac 용 nask htps : // m / 18 / ms / 1b9b77f154 4d5239 5
해보자
먼저 helloos.img라는 디스크 이미지를 만듭니다. 기동하면 화면에 「hello, world」라고 나오는 것 같습니다. 바이너리 에디터를 사용하는 것은 처음으로 앱에 관해서도 사용하기 어렵다고 생각했습니다. 필자는 mac로 작업하고 있습니다만, 찾아도 좋은 에디터를 찾을 수 없고, 이사를 전전에 계속하고 있습니다.
htps // sh mp. 마로군. 네 t/오사키에/우우키/? 그리고 1 세와 SX
여기에서 VirtualBox를 시작했는데 문제가 발생했습니다. 이유는 <가 계속 표시됩니다. 그만해줘....
그것도 그럴 것이다. 한번 읽어 실수해 버려, 60~70등으로 두 번이나 치고 계속 버렸습니다. 이것을 밝히기 한 시간 후에 마? 그리고 대답을 알게 된 곳에서 코드를 다시 쓰고 무사히 시작할 수 있었다든가.
어셈블러에서 hello work를 내보내기
helloos.nas
; hello-os
; TAB=4
; 以下は標準的なFAT12フォーマットフロッピーディスクのための記述
DB 0xeb, 0x4e, 0x90
DB "HELLOIPL" ; ブートセクタの名前を自由に書いてよい(8バイト)
DW 512 ; 1セクタの大きさ(512にしなければいけない)
DB 1 ; クラスタの大きさ(1セクタにしなければいけない)
DW 1 ; FATがどこから始まるか(普通は1セクタ目からにする)
DB 2 ; FATの個数(2にしなければいけない)
DW 224 ; ルートディレクトリ領域の大きさ(普通は224エントリにする)
DW 2880 ; このドライブの大きさ(2880セクタにしなければいけない)
DB 0xf0 ; メディアのタイプ(0xf0にしなければいけない)
DW 9 ; FAT領域の長さ(9セクタにしなければいけない)
DW 18 ; 1トラックにいくつのセクタがあるか(18にしなければいけない)
DW 2 ; ヘッドの数(2にしなければいけない)
DD 0 ; パーティションを使ってないのでここは必ず0
DD 2880 ; このドライブ大きさをもう一度書く
DB 0,0,0x29 ; よくわからないけどこの値にしておくといいらしい
DD 0xffffffff ; たぶんボリュームシリアル番号
DB "HELLO-OS " ; ディスクの名前(11バイト)
DB "FAT12 " ; フォーマットの名前(8バイト)
RESB 18 ; とりあえず18バイトあけておく
; プログラム本体
DB 0xb8, 0x00, 0x00, 0x8e, 0xd0, 0xbc, 0x00, 0x7c
DB 0x8e, 0xd8, 0x8e, 0xc0, 0xbe, 0x74, 0x7c, 0x8a
DB 0x04, 0x83, 0xc6, 0x01, 0x3c, 0x00, 0x74, 0x09
DB 0xb4, 0x0e, 0xbb, 0x0f, 0x00, 0xcd, 0x10, 0xeb
DB 0xee, 0xf4, 0xeb, 0xfd
; メッセージ部分
DB 0x0a, 0x0a ; 改行を2つ
DB "hello, world"
DB 0x0a ; 改行
DB 0
RESB 0x1fe-$ ; 0x001feまでを0x00で埋める命令
DB 0x55, 0xaa
; 以下はブートセクタ以外の部分の記述
DB 0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00
RESB 4600
DB 0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00
RESB 1469432
왜 확장자가 nas인가라고 하면, 책의 집필자씨가 「nask」라고 하는 어셈블러를 만들었다고 한다. 죄송합니다 ... 아, 덧붙여서 mac에서 Catalina의 경우는이 nask 사용할 수 없습니다. 이 nask는 32bit 버전 밖에 없고, Catalina는 32bit에 대응하고 있지 않기 때문에 사적으로는 막고 있을까 ... 유감입니다만 ...
그럼 조속히 시작하자! ! !
제대로 시작할 수있었습니다! 솔직히 어려워서 잘 모르는 것은 비밀입니다.
/|_____________
< To BE CONTINUED…////|
\| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄~ ~  ̄
다음 번에
추가
11/24일 추가
모처럼이므로 Twitter 계정을 개설하려고합니다. 이번 아버지에게, 유명한 엔지니어가 소개했다고 해서, 그렇게, 엔지니어씨와도 연결하고 싶다고 생각했기 때문입니다. 계정 이름은 여기입니다.
htps : // 코 m / 고리 라_타츠 / ms / c1 굳이 1d15c2946 90 042
Reference
이 문제에 관하여(딱딱하지 않는 소6이 VirtualBox에서 「30일로 할 수 있다! OS 자작 입문」을 이루는 이야기. 첫날), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/gorira_tatsu/items/0b5aec93aa74a8c89107텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)