** osdev-jp の紹介
 
 uchan は現在「30 日でできる!OS 自作入門」の読者などが集まった、OS 技術に関するコミュニティ「osdev-jp」というものを運営しています。もしよかったらそちらも覗いてください!
 uchan は2019年現在「osdev-jp」というコミュニティを運営しています。このコミュニティは「30 日でできる!OS 自作入門」の読者などが集まっていて、OS や低レイヤ技術に関する話題を扱っています。もしよかったらそちらも覗いてください!
 
 https://osdev.jp/
 
 普段は主に Slack で会話してます。Slack への参加申請やその他ご質問は [[Twitter @uchan_nos:https://twitter.com/uchan_nos]] まで!
 
 ** uchan について
 
 「30 日でできる!OS 自作入門」の校正を手伝った人です。出版当時は高校生、今は IT 系の会社でソフトウェアエンジニアをしています。
 
 
 以外、とても古い記事ですが、記念で残してます。
 
 ** MinGW(C++言語使用)ではりぼてをコンパイルしよう
 といっても、数個の実行ファイルをMinGWから抜き出してtolsetにコピーするだけ(基本的には)なのですけど。
 
 本格的にC++を使うなら純粋仮想関数への対応やグローバル変数コンストラクタなどへの対応が必要です。スライド書きました。
 [[C++でできる!OS自作入門:http://www.slideshare.net/uchan_nos/cppos]]~
 以下の記述は古いですが、一応残しておきます。
 (2014/01/16追記)
 
 必要なファイル
 -MinGWのパッケージ
 --http://sourceforge.net/project/showfiles.php?group_id=2435からMinGW 5.0.2をダウンロードします。
 
 インストール
 -MinGW-5.0.2.exe
 --実行してDownload onlyを選択(インストールしたい人はご自由に。)
 --MinGW base toolsとg++ compilerを選択
 --binutils-2.15.91-20040904-1.tar.gzとgcc-g++-3.4.2-20040916-1.tar.gzを解凍
 --bin/as.exe, bin/c++.exe, libexec/gcc/mingw32/3.4.2/cc1plus.exeをz_toolsにコピー
 
 Makefile設定
 -app_make.txt, haribote/Makefile
 --以下のように変更・追記
  #INCPATH  = ../../z_tools/haribote/
  INCPATH  = ../../z_tools/haribote
   ・
   ・
  #CC1PLUS  = $(TOOLPATH)cc1plus.exe -I$(INCPATH) -Os -Wall -quiet
  CPP      = $(TOOLPATH)c++.exe -I$(INCPATH) -Os -Wall -B$(TOOLPATH) -c
   ・
   ・
  %.obj : %.cpp ../apilib.h Makefile ../app_make.txt
  	$(CPP) -o $*.obj $*.cpp
 こんな感じに変更する
 --これで完了です
 
 注意)必要なら各種ヘッダに
  extern "C" {
   ・
   ・
  }
 と書いたりしてくださいね。そこは各自で。
 
 ** C言語の罠
 -演算子の優先順位
  int a = 0xaa;
  if ( a & 0xff == 0xaa ) {
    printf("a & 0xff == 0xaa !!");
  }
 というコードで、実は
  printf("a & 0xff == 0xaa !!");
 は実行されない。
 --解答
  if ( a & 0xff == 0xaa )
     ↓
  if ( (a & 0xff) == 0xaa )
 
 ** VESA2.0が起動したノートPC情報募集
 なんで募集するのか。それは、はりぼてOSで高解像度&多色化改造をしても、せっかく買った実験用ノートPCがVESA1.2だったりするとがっくりってことがあるので、そんなことを少しでも回避出来るように情報を集めようと。~
 結局、僕がノートPCを買うときの参考にしたいわけです(すみません)。
 
 ということで、もし「VESA2.0対応のノートPC」がありましたらここに投稿お願いします。
 -募集する規格
 --VESA2.0対応であること。(「はりぼてOS」が高解像度(320x 200より高い解像度)で動けばVESA2.0対応と見なして良い)
 --CD-ROMドライブは無くても良い。
 --フロッピーディスクドライブがあると良い。
 --現在中古PC市場に出回っているとなお良い。
 ***動作報告欄
 -ノートPC買ってしまったので報告。「はりぼてOS」起動&動作確認。VersaProNX VA50J -- ''uchan'' SIZE(10){2007-03-11 (日) 08:03:23}
 -HariboteOSがXGAで起動OK。CDやFDはウルトラベースX2使用で使えます。機種名:IBM ThinkPad X22 -- ''mac'' SIZE(10){2007-03-11 (日) 14:18:24}
 
 #comment
 
 ----
 
 ***IPLを1から書いててはまったバグ(というか作成ミス)
 SSに0x100, SPに0を入れていた。→SSに0,SPに0x1000(0x100×16)を入れたら直った。つまり、スタックって設定した番地からどんどん引き算して使うから、普通のセグメントと逆だと勘違いしてた。(冷静に考えれば全然違うのにね。)
 
 ** OS開発にQEMUのデバッグモードを活用しよう
 OSを作っていると、AXやDSなどのレジスタの中身や、メモリの内容を表示したいときが有ります。そんなとき、QEMUが使える環境なら、いとも簡単に実現できます。
 
 やり方:~
 QEMUが起動したらCtrl + Alt + 2を押すと「QEMU 0.6.1 monitor ...」と1行目に書かれた画面になります。
 そこがデバッグモード(名称は僕が考えました。正しくは知りません)の画面になります。書かれたとおり「help」と入力すると、使えるデバッグ用のコマンドがずらっと出てきます。
 
 以下は僕がよく使うコマンド
 |コマンド|意味|オプション|オプション補足|
 |x /fmt addr|addrアドレスのメモリの内容を表示|/fmt|/b:1byte表示 /h:2byte表示 (/bx, /hxとすると、強制的に16進数表示モードになります)|
 |~|~|~|/i:アセンブラ命令表示モード(mov  %ax,%dsなどと表示してくれて便利)|
 |info subcmd|様々な情報表示|subcmd|registers:レジスタの中身を一覧表示|
 
 [[ここ:http://www.h7.dion.ne.jp/~qemu-win/qemu-doc-ja.html]]の「3.5 QEMUモニター 
 3.5.1 コマンド 」に詳しい解説がありました。(2006/10/17追記)
 
 
 //** tolsetでVMware Playerを使うときのファイル
 //ライセンスはKL-01です。[[ダウンロード:http://uchida.zisaku.com/vmware.zip]]
 //自宅サーバーがダウンしてデータ消失(涙
 //
 //z_toolsの中にぶち込んでください。Readme.txtを読むこと。
 
 ** VMwareでharib18dのcrack1を起動してみるテスト
 QEMUでcrack1をやると、&size(20){''QEMUのバグ''};のせいでcrack1が正常終了し、dirコマンドも正常に打てます。繰り返しますが&size(20){''QEMUのバグ''};です。~
 んで、VMwareでやったらどうなるのかなぁと思って(実機でやる勇気は無いです。)VMwareで%%初号機起動実験%%crack1起動実験をしてみました。
 
 結果:~
 crack1と入力してEnterを押すと、VMwareのメッセージボックスが開き、~
  *** 仮想マシン カーネルスタック障害(ハードウェアリセット) *** ……
 などと書かれていました。~
 OKボタンを押したら強制的にOSが再起動しちゃいました。恐るべしcrack1! (悪さをさせないように改造したら余計被害が大きくなる典型(?))~
 VMwareはQEMUより細かいところまで行き届いているなぁ。
 
 ** VMwareでharib18eのcrack1を起動してみるテスト
 QEMUだとcrack1を起動したところで何のメッセージも出ませんが、VMwareで実験をすると
  0x0D :
   General Protected Exception.
 キターって感じです。一般保護例外という、とてつもなく致命的なエラーが表示されて喜ぶのって、結構特殊だと思ったり(笑)
 ** こめんと+α
 -だって一応商品ですからね -- 名無しさん SIZE(10){2006-03-25 (土) 22:14:27}
 -C++で作ってみました。 http://d.hatena.ne.jp/Bayside/20060518/p1 -- ''bayside'' SIZE(10){2006-05-18 (木) 14:26:28}
 -vmware.zipのリンクで404食らいましたよw -- [[Flast]] SIZE(10){2007-06-23 (土) 07:32:27}
 -すんませんです。自宅サーバーがダウンしてデータ消失しました。 -- ''uchan'' SIZE(10){2007-06-23 (土) 17:18:24}
 
 #comment

リロード   新規 編集 差分 添付   トップ 一覧 検索 最終更新 バックアップ   ヘルプ   最終更新のRSS