Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

今よりも少し(?)昔、 Windowsを作ろうとした話

1,580 views

Published on

2016年12月20日開催の、「年忘れだよ#ssmjp ヒカ☆ラボに全員集合」で発表したスライドになります。

Published in: Software
  • Be the first to comment

今よりも少し(?)昔、 Windowsを作ろうとした話

  1. 1. 今よりも少し 昔、 を作ろうとした話 年忘れだよ ヒカ☆ラボに全員集合
  2. 2. きっかけの話 むかーしむかし ねんごろ ぼくは つかいでした のあのアプリが使いたい 動くといいのにな、なんで動かないのかな
  3. 3. かんがえてみた アプリケーションはプログラム データである 実行ファイルのフォーマットがちょっと 違う あれ これって似たようなものなのでは ELF header .text .data .bss PECOFF header .text .data .bss
  4. 4. しらべてみた は「 のお化け」 ってつまりプロセス空間にマップされる共有ライブラリ のバイナリが を で呼ぶように、 のバイナリは を関数コールする プロセス空間 EXE DLL DLL
  5. 5. ひらめいた ( 年 月) ファイルは を呼ぶだけ じゃあ の中身を自分で作ってしまえば が でそのまま 動く がちゃんと仕様の通りか検証してみたい欲が プロセス空間 EXE 自作DLL 自作DLL syscall
  6. 6. やったこと を動かそうと思ったら、 を読み込むところに手を加えて を読ませればいいのでは カーネルを改造して、 をマップ可能に 具体的には、 システムコールの実装をいじりました
  7. 7. やったこと はいいけど はどうする だと、 ダイナミックリンカ が呼ばれてそいつがマップする を改造して、 をマップできるようにしちゃえ 改造 を読み込むようカーネルにも細工を
  8. 8. やったこと 実は、プログラムコードの呼び出し規則 が と とで違います 自作 から直接 の関数を呼べると楽できるのに (当初)できないので を でコンパイルしてました できあがったもの うーん、 を改造して、相互に呼び出せるようにしちゃえ 解決
  9. 9. では を作りましょう の中身を職人が一つ一つ手作りしています のようなものは の該当関数呼び出しで実装 ウィンドウを描画する の中身は の呼び出しをする、といった感じ の一部も実装されたり、手伝ってくれる人もいたりしました
  10. 10. 開発当初のスライドより一枚だけご紹介 年 月 のスライド。 当時はワイド画面じゃなかったので スライドも でした。
  11. 11. そうしてできあがったものは 動き出したころのスライド ● 電卓が動く ● コマンドプロンプト が動く にもできました ● マインスイーパーもどうにか動く ● けど は動かないー ● なぜか 当時流行っていたエロゲーもいくつか動きました(スクショ見つからず) 現在でいうところの の逆みたいな感じです
  12. 12. そして伝説へ の 数が多すぎてつくるのとってもしんどい やがて は の時代へ。 も出てきて、ますます が複雑に が使われなくなったり である必然性がなくなったり すでに実績のある をみんな使うのもあって開発者も増えず多忙になって 動かせることが実証できたので満足した、のでした。 おしまい。

×