(゚Д゚)
>1 スレ立て乙
なんでこんなに過疎ってるの?
時期が時期なだけに 冬を越せるといいね OS作るの難しいしな
7 :
Be名無しさん :05/03/07 22:16:53
Mona用スレ?
>Mona用スレ? いや、ソレとは別物。 最近、作ってる人、出てこないけど、どうにかなったかな…?
同種スレ乱立してるしなあ。
10 :
Be名無しさん :05/03/12 00:22:55
C言語でブートセクタを作って見たけど、ほんとに何も出来ない。 ディスクから次のコードを読み出してジャンプ。 それだけで、512byteになったよ。
ブートセクタが第二セクタを読み出し、第二セクタが第三セクタを読み出せば、何でも出来る。
14 :
Be名無しさん :05/03/14 14:50:23
H8用OSだから
はなわと卑下が脳内でダブるのはどうして?
>>14 うっそーん、「Hyper Operating System」て書いてありますやん。
てか、このスレも書くと反応あるのね。
17 :
Be名無しさん :05/03/14 17:58:54
胡散臭い厨 Hideyoshi Mist Zakky あっきぃ ベイサイド
一体何が胡散臭いのだろう。
19 :
Be名無しさん :05/03/14 21:14:52
Sphinx C--ってどうなの? サンプルを見る限り結構よさげだけど…。 マニュアルが厨房には辛い…。
このスレで暴れている厨がうざいから クローズで開発していると思われる
22 :
Be名無しさん :2005/04/05(火) 09:17:42
ブートストラップからCのプログラムを読みこむところまでは出来たんだけど 同じ手順でC++のプログラムをリンクしようと $ c++ -c kernel.cpp $ ld --oformat binary -o kernel.bin -Ttext 0x7e00 -e start kernel.o kernel.o(.eh_frame+0x11): undefined reference to `__gxx_personality_v0' こんなエラーが出るんですが何をリンクしてやればいいんでしょうか?
23 :
22 :2005/04/05(火) 11:26:48
すまん解決。 とにかくいろいろオプション付けたら通った。 どれで解決したのかは分からん。 $ g++ -nostdlib -fno-exceptions -fno-rtti -fno-builtin -c kernel.cpp $ ld -n -static -o kernel.bin -Ttext 0x7e00 -e start kernel.o
24 :
Be名無しさん :2005/04/17(日) 00:33:24
25 :
Be名無しさん :2005/04/17(日) 00:40:54
>>24 ふむ、Mac OS Xとの互換性をソースコードのレベルではもてるな。
実現したらおもしろい...。
MacもMacOSXもいらないので、 WindowsでMacOSX用アプリが動くようにしてくれ。
27 :
Be名無しさん :2005/04/17(日) 23:39:26
>>26 Windowsの方がいらない。
どうせならunix系でマックのアプリ動かしてほしい。
>>24 が言ってるような物だったら無理でもないな。しかしマックはmach-oバイナリーだからどうだろう。どっちみちPPCでないと無理だな。
OS(土台)としては、Windowsはあまり良くないんでは・・・。 unix系(BSDとLinux)のOSでWindowsやMacOSXのアプリが動くほうがイイ!。 MacOSXはDarwin(BSD系)だが。 MONA OS がんばれ。ついでに MoXも・・・
>>28 その土台としてBSDやLinuxよりSolarisが (・∀・)イイ!!
って流れなのでは?
30 :
Be名無しさん :2005/04/20(水) 11:29:13
>>29 そうだな。実際にOpenSolarisがでてからの話だけど。
OpenSolarisになったらLinuxのようにコミニュティーのサポートも増えるし(ドライバーなども増える)。で、今のソラリスより軽くなるだろうな(サンの所有管理ソフトはオープンしないだろうから)。そうなったらいい土台になるよ。
>>28 悪いけどMONA OSは将来が無いでしょ。だいたいカーネルをC++で書いちゃうってこと自体おかしい。ま、でも頑張って欲しいのが正直な気持ち。
31 :
Be名無しさん :2005/04/20(水) 19:20:00
>>30 L4の実装の1つとかC++で書かれたカーネルもあるから技術力次第だと思うが...
>>32 それでそのL4/C++はオリジナルより性能良くなったの?駄目駄目になったん
じゃないの...
>>33 性能的にどうなったかはワカラナイ。
私はC++は嫌いですが、それなりの人が書けばC++でも物になると思うけどなぁ。
C++をCとして使う分には性能は落ちないけど、 まともにオブジェクトやテンプレート使うと 確実に遅くなるよ。
CとC++は(LispとかJavaにくらべ)言語仕様の根本が非常に近いし、 CPUがCとC++で処理速度を変えるという話は聞いたことがないので、C/C++は等速であるのが基本。 それをたかがオブジェクト=構造体使ったくらいで遅くなるというのであれば技術的根拠を示すのが筋。 テンプレートに至ってはコンパイル時に特殊化されインライン展開までされるから、STLとかは普通の自作クラスより速いよ。
>>36 今は知らんけど、昔は最適化弱かった。
virtual使えばVMT引くのに時間がかかるし。まともにオブジェクト使うってーのはそういうことでないの?
#つうかなぜにLispとJava…
まあ、今まともに動くCPUなら気にする程のオーバーヘッドにならんと思いますが。
どーしても遅かったらがんばってCで書き直せばいいことだし。
仮想関数テーブル方式で多態すると分岐予測失敗しまくり
Cと比べてC++は、遅いし、サイズは妙にでかくなり、バグを沢山抱えこむ。 これが定説では?
>>39 それが定説なら、C++は世の中から消滅しているはずだが。
なぜC++が色々な場面で使われているのだろうか?
>>40 >なぜC++が色々な場面で使われているのだろうか?
たとえばどこで使われてるの?
>>37 同じ機能をCでやろうとすればやっぱり同じだけか、余計に遅くなるだろ。
Cで書き直すというのも訳が分からん話で、速度が必要なとこだけをC"スタイル"で書けばいいだけ。
>>39 実装系によってはランタイムライブラリがでかいというのはあるね。
バグをたくさん抱え込むのはC++に振り回されてるからじゃん。
遅いということに疑問を投げてるのだから、「遅いのは定説」というのは思考停止。
C++をbetterなCにすぎないものとして使ってる人は多い
46 :
Be名無しさん :2005/04/22(金) 20:17:19
速度やバイナリーの大きさの問題もあるがライブラリーの依存性も問題。ライブラリーがかわったらアプリをコンパイルし直さないといけないからな。 個人的にはCのオブジェクト指向言語としてはobjcの方が全然いいと思う。
>>40 C++が使われている色々な場面のレビューまだ?
C++を使うとバグまみれなソフトができるのは、低脳が書くものだけだという事実を受け入れよう
えらい。 よく自分を見つめてるな。
51 :
Be名無しさん :2005/04/26(火) 16:24:21
俺もちょっと手をだしてみよう
52 :
Be名無しさん :2005/04/28(木) 22:09:46
誰も見てないのかな
Mona OSの最新バージョンは、何ですか? ダウンロードサーバ教えてください。ファイルがいっぱいあってよくわかんない orz
俺はワカゾーなんですが、Mona OSの開発に協力したいです。 でも、C++分からないので、もしこのOSが GUIがあったら アイコン作りなどしたいです。 どうか貢献させて下さい。おながいします。
56 :
Be名無しさん :2005/05/01(日) 00:43:30
書き込みがあったと思ったらこれか
>>55 >>56 スマソ...orz
間違えて、スレ違いでした。まぎらわしい....
逝って来ます。【しかもageてしまった】
58 :
Be名無しさん :2005/05/04(水) 17:59:55
自作OSがqemu上でなら正常に動作するんだけど 実機だと画面の真ん中あたりより下へグラフィックを表示出来ない・・・ なんか心当たりない?
実機はDOSの使用を考慮しなくなった辺りから、ハードウェア スクロールが変(DOS/Vのディスプレイドライバ組みこみ時に /hs=off 付けないと画面ぐちゃぐちゃになる)なことが多いけど それ…か??
mona.conf かなんかを編集して解像度を決めておかないといけないんじゃなかったっけ
>>58 ハードウェアのスクロール機能は使ってないはずなんだけどなぁ。
>>59 自作OSっすよ。
62 :
61 :2005/05/05(木) 10:09:32
うわレス番号一つずつずれてるorz
OS自作するときってドライバとか各製品ごとに 作ってやんなきゃいけないの? Ethernetボード(っていうのか?)のドライバ作りたいんだけど なにか統一された規格かなんかありませんでしょうか?
>>63 NDISドライバを書いてWindows用のドライバを流用するのが現実的
65 :
63 :2005/05/07(土) 12:07:04
そんなに大変じゃない PICでNICドライバ書いてる人もいる
68 :
63 :2005/05/07(土) 16:27:36
>>66-67 ぬ、そうなのか?
てか質問に対する回答がまだ得られてないのですが。
「OS自作するときってドライバとか各製品ごとに
作ってやんなきゃいけないの? 」
教えてプリーズ
>>68 ものすごく基本的な事なので、本気で作るつもりなら
人に聞く前に自分で調べれ。
まあEtherの統一規格言ったらNDISくらいしか残ってないのう…
漏れはODIの方が好きだったんだが。
>>68 ものによる。
ところで、ドライバとかの「とか」ってなんだ?
71 :
63 :2005/05/07(土) 18:11:30
>>69 ありがとうございました。
とりあえずNDISについて調べてみます。
>>70 ネットワークに接続するためのドライバです。
>>71 なるほど。
ネットワークと一口でいっても、古典的にはSLIPとかあるし
定番のイーサとか、いわゆる無線LANとか、Air EDGEで
プロバイダに繋がりゃいい、なんてのもアリだろうしね。
無線といえばアマチュア無線なんてのもあるしな。
「とか」はそういうプロトコル部分を意識してるのかとオモタ。
73 :
Be名無しさん :2005/05/10(火) 00:59:05
最近OSを作ろうと思ってる工房なんですが、 とりあえずFDブートのHelloWorldが出来ました。 で、疑問に思ったんですが、あれってブートセクタはファイルとしては 現れませんよね?でも他のファイルをきちんとFDに書き込める。 ディスクの管理というかなんというか、 そこら辺どうなってるんでしょうか?
74 :
Be名無しさん :2005/05/10(火) 01:09:33
>>73 BPB (BIOS Parameter Block)
DPB (Device Parameter Block)
77 :
Be名無しさん :2005/05/10(火) 02:55:35
78 :
Be名無しさん :2005/05/10(火) 02:59:58
79 :
Be名無しさん :2005/05/10(火) 03:15:54
80 :
Be名無しさん :2005/05/10(火) 05:24:17
81 :
Be名無しさん :2005/05/10(火) 05:50:12
82 :
Be名無しさん :2005/05/10(火) 06:54:17
83 :
名無しさん@Linuxザウルス :2005/05/11(水) 10:20:27
俺もOS作りたいと思ってるんだけどよくわからなくて、、、 そしたらMONAって本みつけたんでそれ読んでMONA OSの開発を手伝おうかと思ったけど それだとなんだかおもしろくないのでMONA OSとは また違うOSを最初から作りたいなって思っているわけです そこで皆さんのちからを借りたいなと思った訳ですよ んでブートローダーをアセンブラで書かないといけないようなのですがどのように書けばいいのか わからないので誰か教えてください
85 :
名無しさん@Linuxザウルス :2005/05/11(水) 11:22:15
>>84 こんなに早く回答してくださってありがとうございます。 まず過去ログ読んでみます 多分、分からないことだらけなので その時はまたおねがいします
>>75-76 返信遅れてすいません。書き込み直後に寝てしまったもので・・・
あー、OS作るのってむずい
想像以上に自分が何も知らないことを痛感中です
87 :
Be名無しさん :2005/05/12(木) 01:37:45
>>80 その日記みたいなレスを書く前にコードの一行でも書いたらどうだね
ついに人間とロボットが会話を楽しむ時代がやって来たのですね!
90 :
86 :2005/05/13(金) 16:12:17
FDブートのHelloWorldが作れたので、それを改造して 文字列を表示する関数を作ろうとしたんですが、意味不明な文字化けが起こって うまく表示されません。 どなたかアドバイスしてくださったら幸いです。 以下にソース張ります(動くやつと動かないやつ 環境はGCCです
91 :
86 :2005/05/13(金) 16:12:47
/* 動くやつ */ .code16 .text .global _start _start: movb$0x03, %ah xorb%bh, %bh int $0x10 movw$message, %bp movw$0x07c0, %ax movw%ax, %es movw$12, %cx movb$0x13, %ah movb$1, %al movb$0x07, %bl int$0x10 ret hang: jmphang message: .ascii "Hello World!" .org 510 boot_flag:.word 0xaa55
92 :
86 :2005/05/13(金) 16:16:54
/* 文字化けするやつ */ .code16 .text .global _start _start: movw$0x07c0, %ax movw%ax, %ss pushw$12 pushw$0x07c0 pushw$message callprint
93 :
86 :2005/05/13(金) 16:17:16
/* 続き */ /* この関数は最初にbpの値、次にesの値、最後に文字列の長さをpopします */ print: movb$0x03, %ah xorb%bh, %bh int $0x10 popw%bp popw%ax movw%ax, %es popw%cx movb$0x13, %ah movb$1, %al movb$0x07, %bl int$0x10 ret hang: jmphang message: .ascii "Hello World!" .org 510 boot_flag:.word 0xaa55
94 :
86 :2005/05/13(金) 16:18:08
tabが消えてる。。。orz
>>90 なんというか…基礎がなってない。
アセンブラのニーモニック覚えただけで完璧とか思ってないかい?
誰も完璧だなんて思ってないでしょ……。 わからんからアドバイス求めてるわけで。
97 :
86 :2005/05/13(金) 20:18:02
>>95 うっ。。。手厳しいですね。
正直アセンブリはgccの-Sオプションの出力とかLinuxの
ソースとかを見たことがあるだけなのでまだいまいちわかってないです。
どこを改善したらいいでしょうか?
95じゃないが、 ・call命令は内部で次のアドレスをpushする ・ret命令は内部でスタックからpopして それをアドレスとみなして飛ぶ で、push〜popとcall〜retを無造作に混ぜたらどうなるか想像してみ。
99 :
86 :2005/05/13(金) 21:41:12
>>98 あっ!そうか
callのときに積んだEIPの値をBPにpopしちゃってるってことですね。
じゃあさっそくその部分を修正してみます。
アドバイスありがとうございました!
100 :
95 :2005/05/13(金) 22:55:47
>>99 も一個。
printをそこに置いちゃまずいだろう。
とりあえず、アセンブラの基礎の本一冊読んでおいたほうがいいよ。x86じゃなくていいから。
あと、アセンブラのコード読みまくれ。コンパイラが吐いたのじゃなくて、人間が書いたの。
101 :
86 :2005/05/13(金) 23:23:23
>>100 なるほど。。。
では本とかソースとか読み漁ってから出直してきます。
ソースって何かお勧めなのありますか?
出来ないなりに適度に作ってしまいつつ。というのが面白いよ多分。 読み漁りまくるのは、ある程度、その道に踏み外してからのが良いような気がする。 面白いためにやるんであって、読み漁るためにやるわけではないだろうから。
参考にならんやろ(´・ω・`)
105 :
86 :2005/05/14(土) 15:36:07
とりあえずmonaの最初のリリースとか読んでみることにします。 もうすぐ中間テストだ。。。orz
106 :
86 :2005/05/14(土) 16:04:09
出来ました! 実際昨日の夜ぐらいにはもう書きあがってたっぽいんですが、 .bochsrcの記述ミスのおかげで一日中悩んでました。なんてアホな。。。 .code16 .text .global _start _start: movw$0x9000, %ax movw%ax, %ss movw$0xa000, %sp pushw$12 pushw$0x07c0 pushw$message callprint jmphang
107 :
86 :2005/05/14(土) 16:04:44
続き print: addw$2, %sp movb$0x03, %ah xorb%bh, %bh int $0x10 popw%bp popw%ax movw%ax, %es popw%cx movb$0x13, %ah movb$1, %al movb$0x07, %bl int$0x10 subw$8, %sp ret hang: jmphang message: .ascii "Hello World!" .org 510 boot_flag:.word 0xaa55
108 :
86 :2005/05/14(土) 16:06:12
ギコナビで書き込んでるんですが、なぜかタブが消えてしまいます。 見苦しくってすいません
>>106-107 それだと、運悪く割り込み入ったらあぼーんしますが。
まずは、スタックの使われかた覚えましょうね。OSを書く場合避けて通れない所だから。
どんなブラウザで書いたってタブは消えるって。 タブを全角スペース二個分くらいに置換して書き込むといいよ UNIX MAGAZINE COLLECTIONの「Linuxのブートプロセスをみる」って本とかいいぞ がんがれよ
111 :
109 :2005/05/14(土) 16:21:22
あ、int使ってるからその時点でダメですな。
112 :
86 :2005/05/14(土) 16:27:24
>>109 うーむ。まだ問題があるのですか。
先は長そうだなぁ。。。
でも、初めてCでHelloWorldやったときよりも
感動は大きいです
113 :
86 :2005/05/14(土) 16:30:39
>>110 そうだったんですか。実は2chに書き込むのも
今回が初めてなので知りませんでした。
応援ありがとうございます。がんがります!
NASMでは.386みたいな命令はどう書けばいいのですか?
別にスタックに拘らなくても、レジスタに余裕あるならレジスタで 渡したほうが楽だと思うが >パラメーター
Cとくっつける時にはスタックから引数を拾う技術が必要だからなあ。 覚えておいて損はしないだろう。
EM64TではR8〜を使うけどね
>>118 mtools とかは?
FAT系のみ対応かつ日本語ファイル名等はおかしくなりそうだけど。
120 :
118 :2005/05/15(日) 17:08:42
>119 thx。 ちとぐぐった感じだとwin上で使うための情報はあんまし 出てこなくて手強そうだけど、も少し調べてみる。
ファイルシステムの勉強を兼ねて、そういうのを作ってしまうというのも 一つの手ではないかと。
>>120 Monaじゃfat_writeって自前ツール使ってMakefileで自動的に書いてる
fat_writeはMonaのソースに入ってるから一度コンパイルしてみそ
123 :
86 :2005/05/15(日) 19:01:07
LinuxとかMonaのブートセクタを読んでみたんですが、 なぜかどっちもブートセクタ開始時に別のアドレスに 自身を転送しています。 これって何か意味があるのでしょうか?特にないような気がするんですが。。。
124 :
118 :2005/05/15(日) 19:57:41
そう言やFAT12ならブートセクタ自前で書かずにファイル名を IO.SYSにしてDOSのブートセクタに読んでもらう手も有るな。 実機で試す時はrawriteとか使わずにコピーするだけで済むから ユーザ側も楽かも。 まあ結局qemu用のイメージ配布するようになると同じ動作のやつ 書かないと駄目だけど。 >121 無けりゃ自分で作ろうかなとは思った。 読み込みは作ったこと有り(susieプラグだけど)。 >122 thx。MonaADKにバイナリも入ってるけどまたcygwin用か…。 にしてもosdev-jに書いてないツールが次々出てくるな。書き足してきた。
>>124 単にMonaADKは湾岸の趣味だからfat_write自体はCygwinに依存してるわけじゃない
MonaADKじゃなくてソース取ってきて自分でコンパイルすればCygwinがなくても動く
勉強目的ならFATもいいけどLinux系のファイルシステムもいいかもね。
>>124 XPで普通にフロッピーをフォーマットしたら、ntldrの先頭64kBばかりを読み
込むブートセクタになっちゃうかと(しかも連続して配置されているとの
決め打ちで)。
MS-DOS 6.2とWin95系は、同じくIO.SYSを読み込むもののIO.SYSのエントリ
仕様は異なったはずだし、IO.SYS全部をブートセクタが読み込むわけでは
なかったと思う。
130 :
86 :2005/05/15(日) 22:58:21
>>129 なるほど。そういう意味があったんですね。
それで僕も意味もわからずにその部分を真似してみたんですが、
マシンによって結果が変わる、という状態になってしまいました。
手元に今実機が2台あるんですが、一台では正常に表示されて、
もう一台では無限にHelloWorldで、Bochsでは正常に表示されます。
以下にそのソース張ります。
どなたか原因わかりますでしょうか?
BOOTSEG = 0x07c0
STARTSEG = 0x200
.code16
.text
.global start
start:
movw $BOOTSEG, %ax
movw %ax, %ds
movw $STARTSEG, %ax
movw %ax, %es
xorw %si, %si
xorw %di, %di
movw $512, %cx
cld
rep
movsb
ljmp $STARTSEG, $secondstart
131 :
86 :2005/05/15(日) 22:59:21
secondstart: movw $0, %ax movw %ax, %ss movw $0xa0000, %sp pushw $12 pushw %es pushw $message call print jmp hang print: addw $2, %sp # escape ip movb $0x03, %ah xorb %bh, %bh int $0x10 popw %bp # third parameter popw %ax # second parameter movw %ax, %es # set es popw %cx # first parameter movb $0x13, %ah movb $1, %al movb $0x07, %bl int $0x10 subw $8, %sp # push ip ret hang: jmp hang
どうでもいいけど
>>86 って内容ぴったりのハンドルだね
>>130 スタックの使い方がアレですね。
正常だと思っているものも恐らくhang:以外のところでフリーズしている
か暴走しているか、予想外のコードを実行した後でたまたまhang:のところ
にたどり着いているのではないかと。
int命令もスタックを使うという事で。
134 :
86 :2005/05/16(月) 01:13:44
>>132 本当は73で最初に発言したんですけど
僕も86が気に入ったんで使ってます。
>>133 int命令って一応レジスタ退避して復元しませんでしたっけ?(自身ないです
っていうかマシンごとに動作に差があるのが変なんですよね。
BIOSの中身の問題なんでしょうか。
だとするともはや手がつけられない。。。
っていうかもうすぐ中間テストだぁぁあせdfgyふじこlp;
まじで勉強やヴぁいのでテスト終わるまでの1週間ほどPC封印しようと思います。。。
というわけで皆さん1週間後ぐらいにまたよろしくおながいします。。。
# あー、生きて戻ってこれるかな
>>134 そのレジスタをどこに退避しているかという話になる訳だが。
だからあれほど本を読めと…
>>134 ヒント:スタック
まぁ、アセンブラ経験値が上がればプロシージャに入った直後にスタック
ポインタ値を増加させるという事は死んでもしなくなるとは思うが…。
>>136-137 多分本のどこを読めばいいのかすら分からないと思うよ
>>134 スタックの手動トレースしてみる
print:
SP[IP][3][2][1]
addw $2, %sp # escape ip
[IP]SP[3][2][1]
これ退避じゃなくて放棄
基本的にスタックの左側にある値は保護されない
スタックの左側にあるということは外に晒すようなイメージ
この場合int割り込みを掛けたときに
そのときのIPがpushされるから
その瞬間退避したと思った[IP]が破壊される
定石としてはサブルーチンの最初で
movw %sp,%bp
とでもしといて
movw [%bp+4],%ax
のようなことをして引数を取得する
139 :
128 :2005/05/16(月) 19:10:02
Linuxのカーネルのソースを読んでるがインラインアセンブラに書いてあることが理解できん
>>140 最初はGNU GRUBから読むと良いのではないか。
>>141 だが今俺はkernel1.0のfs以下のソースを読んでるのだが。
それに俺はGASの文法がわからなくてな
>>141 それは止めた方がいいのではないかと。
>>142 なぜにそんな古いものを…
IntelとAT&Tの大きい違いは
・オペランドの順番が逆。
・命令の最後にオペレーションサイズが付いてる。
位だろう。
慣れればなんて事は無いでつ。
144 :
142 :2005/05/17(火) 17:13:19
今雑誌コーナーに並んでるテックアイがオペレーティング・システム入門だった ブートストラップ以降に必要になるであろう知識が書いてあるっぽかった
>>146 あんまし関係ない。
無駄って程でもないので、金に余裕があるなら買ってもいいんでは。
ざっと見ただけなので、大事な事を見落としているかもしれんが。
86は撃沈か。
そういえば戻ってこないな。 いきなりブートローダーに手を出して挫折か… まあ何事も勉強だ。
以前、Interfaceの特集でC言語でブートローダを作ってた。 あれを参考にすれば? 多少、インラインアセンブラを使用するが。
>>152 あれもアセンブラでごりごり書ける位じゃないと厳しい。
ああいう世界ではホントにC=高級アセンブラだから。
ブートローダーなんてものは枝葉だから、そんな所でつまって
本題に入れないつーのはもったいないと思うけどねえ。
まあ、そのへんさくさく作れないレベルで先に進んでも、
同じようにはまるだけという気もしますが。
154 :
86 :2005/05/27(金) 16:25:06
>>150-151 いや、まだ撃沈してないっす(テストは撃沈
とりあえず皆さんからのアドバイスを元に、ちゃんと動く
print関数を実装できました。
今ブートセクタから第2段階のローダー(?をロードしようとしてます。
ところで、まだまだ先の話なんですが、マイクロカーネルって
OSの機能が分断されて別々のプロセスとして働くんですよね?
Monaとかでもファイルシステム担当のサーバがあるっぽいんですが、
そのファイルシステムを担当するサーバを実行させるために
サーバをディスクから読み出すためにはどうするんでしょうか?
やはり最低限必要な機能はカーネルに入れるとか?
155 :
86 :2005/05/27(金) 16:43:09
ちなみにこれがprintの完成版です。 /* first parameter --- bp register's value */ /* second parameter --- string length */ /* third parameter --- es register's value */ print: movw %sp, %bp movb $0x03, %ah xorb %bh, %bh int $0x10 movw 2(%bp), %ax # third parameter movw %ax, %es movw 4(%bp), %cx # second parameter movw 6(%bp), %bp # first parameter movb $0x13, %ah movb $1, %al movb $0x07, %bl int $0x10 ret
>>154 Monaは0.3.4以降とそれ以前では全然違うんだが、
とりあえず0.3.4以降の最新版について説明すると、
firstbootから呼び出されたsecondbootで
カーネルと各種サーバーと設定ファイルを読み込んでる。
だからカーネルにはファイルI/Oは入っていない。
とりあえずMonaをCVSからダウンロードして確認してみれば?
そうすればMona見れば分かるようなことでいちいち悩まなくていいわけだし。
注意点として、Monaのsecondboot.asmはC#をコンパイルしたコードなので、
secondboot.asmを直接読もうとしても撃沈する。
tools/IL2ASM16/secondbootにあるC#のコードを参照のこと。
簡潔に書いてあるので何やってるかすぐ分かると思う。
157 :
156 :2005/05/27(金) 16:55:42
適当に書いたらミスってたので訂正スマソ ×0.3.4 ○0.3.0α4 ×tools/IL2ASM16/secondboot ○tools/MonaNET16/SecondBoot
分裂症のOS
159 :
86 :2005/05/27(金) 19:21:37
なるほど。 C#はおろかC++の経験すらないんですが、大体の流れなら わかるものなんでしょうか? とりあえず読んでみます
>>155 サブルーチン中で、スタック操作"しない"なら、
sp を bp に退避せず直接 movw 2(%sp), %ax とかでいーんじゃね?
と思ったら、138のアドバイスね。
>>160 > movw 2(%sp), %ax
8086の命令セットでは記述できない
あ、あれ。mov eax, [esp+4] とか書くのと同じノリだった。
>>162 Windows使ってるならDOS窓でdebugコマンド使って確認できる。
C:\>debug
-a
3528:0100 mov ax,[bp+2]
3528:0103 mov ax,[sp+2]
^ エラー
3528:0103
-q
>>161 でも、386以降限定としてしまえば、リアルモードでも67Hを使えば
32bitアドレッシングモードが使えるよ(64kを突き破らないように注意
がいるけど)
>>164 出来るのは分かるけど初心者に教えるのに適したことではないよね。
今回は初心者からの相談なわけだから。
>>164 ところでx86-64限定として、リアルモードから64bitアドレッシングモードが
使えるようなプレフィックス命令はあるのかなあ?
WOW64の32bitプロセス限定でRAXとかを使う裏技はあるらしいけど。
MINIXのソースを読んでるのだがLinuxと違ってわかりやすいな。
VRAMって今もメインメモリと共用なの?それとももう専用のRAM使ってるの?
>>168 オンボードのやつはいまだにメインメモリと共用のがあるけど(VIAとかSISとか)、
単体でAGPに挿すやつは独自に持ってるのが普通。
前者はマザーボードに512MB積んでもOSからは480MBとかに見えて減るので分かる。
とりあえずVGAが刺さってたら専用なんだ
172 :
Be名無しさん :2005/06/29(水) 18:06:42
スマソ。質問です。 軽い気持ちで、ブートローダーを作っていたのですが、 起動したときに、ちゃんと読み込まれない模様。(OSの入ってるディスクを入れてほかのキーをタイプして下さいみたいなメッセージが出る。) //コンパイル・・・nasm -f bin -o 1stboot.bin 1stboot.asm //ddコマンドを使ってどうとかこうとか・・・dd if=1stboot.bin of=1stboot.img bs=512 count=1 ↓から1stboot.asmのソース ;-------------------------------------- ; Name :Macro PRINTSTR ; Spetial Thanks:higepon ;-------------------------------------- %macro PRINTSTR 1 mov si, %1 %%ByOS: lodsb cmp al, 0 je %%end mov ah, 0Eh mov bh, 0 int 10h jmp %%ByOS %%end %endmacro
173 :
Be名無しさん :2005/06/29(水) 18:08:00
;-------------------------------------------------- ; Name :1stboot.asm ; Spetial Thanks:higepon ;-------------------------------------------------- [ORG 0] BITS 16 ; cs = 07Coh jmp 07C0h:start osStart db 'Starting ByOS...', 0dh, 0ah, 00h resetOk db 'disk reset ok', 0dh, 0ah, 00h start: cli mov ax, cs mov ds, ax mov ss, ax sti PRINTSTR osStart
174 :
Be名無しさん :2005/06/29(水) 18:08:42
reset: mov ax, 0 mov dl, 0 int 13h jc reset PRINTSTR resetOk forever: jmp forever times 510-($-$$) db 0 dw 0AA55h ここまで。 コンパイル等のときにエラーは出てない模様。 お願いします。
dd if=1stboot.bin of=1stboot.img bs=512 count=0 じゃないか?
>>172-174 シグネチャがちゃんと書けてないんでは?
ついでにすげーどうでもいい事だが、コメントのスペルが間違ってる。
>>175 count=0じゃ書き込まれないような気がするな。
seek=0 count=1 だね
178 :
172-174 :2005/06/30(木) 14:33:17
>>178 最後の2byte。
BIOSがブートセクタの中身チェックするのはそこしか無いはず。
ディスクエディタか何かで、ちゃんと予定通りの配置になってるか
確認するのがいいのでは無いかと。
181 :
Be名無しさん :2005/07/01(金) 03:10:01
作ったOSの試運転に使ってた古マシンが壊れちゃった...
182 :
172-174 :2005/07/03(日) 16:52:58
>>180 ありがとうございます。
最後の2byteはダンプでF6 F6となっておりました。
配置を直しましたが、エクスプローラーで見れなくなりました。(フォーマットしますか?とかいうメッセージが出てくる。)
これは仕様でしょうか?(´・ω・`)
あーあ
185 :
172-174 :2005/07/05(火) 14:23:49
>>183 ありがとうございます。
再フォーマットしてコピー後、再起動したら別のメッセージがヽ(゚∀゚)ノ
・・・・同じ意味でしたorz
>>172 お前の作ったブートローダーには
「OSの入ってるディスクを入れてほかのキーをタイプして下さいみたいなメッセージ」
なんていう文字列なんかどこにもないだろ?
っつーことは、BIOSか、既存の他のブートローダーが実行されている。
>>172 にはBPBがないようなので、OSがFATとして認識することはありません。
FAT12として認識させたいならブートローダの中にBPBデータを含めておく必要があります。
FAT12で再フォーマットをするとBPBはOSによって書き込まれますが、
当然自作プログラムも消えて、起動可能でもなくなりますので、
>>185 となります。
OS開発であれば、最初に作成する起動可能フロッピーはFAT12にする必要はまったくないので、
BPBのことは考えず、Winなどで読み込み可能にすることも考えない方がよいと思います。
そのときは、
>>182 のようになるのは誤動作ではありません。
たしかにFAT12互換にしておくと利便性はありますが、それの追求は後でよいと思われます。
189 :
172-174 :2005/07/07(木) 14:56:45
>>186 FDに入ってるブートローダーだと思います。
>>187 > Winなどで読み込み可能にすることも考えない方がよいと思います。
> そのときは、
>>182 のようになるのは誤動作ではありません。
> たしかにFAT12互換にしておくと利便性はありますが、それの追求は後でよいと思われます。
ありがとうございます。
>>182 の時はFDDで起動させても何も表示されず、ただ白いアンダーラインが表示されるだけでした。
とりあえず現段階(再フォーマット・ddコマンドでコピー済)のFDDのダンプを張らせていただきます
ttp://20a.mata-ri.tk/src/20M0540.txt.html パスはOSです。
190 :
187 :2005/07/07(木) 16:40:31
>>189 他人に丸投げで(しかもダンプを)デバッグをさせるという姿勢は理解できません。ので見てもいません。
>>180 さんおっしゃるように、最後の2バイトが正しければブートローダとして読み込まれてしまいます。
シグネチャが正しいのに動作しないのであれば、あとは単にプログラムのミスです。
実際、アンダーラインの表示で応答が無くなるのは、単に暴走しているからでしょう。
そろそろ開発終了かな
193 :
172-174 :2005/07/09(土) 07:18:16
>>190 あまったれてすみませんでした。
それと報告が有ります。
バイナリエディタでfirstbootの部分をコピー -> ディスクイメージに貼り付けをしたら、上手く表示されました。
しかし、FATが潰されてる模様orz
FATを潰さずに以上の作業が出来る方法は有りますか?(この作業でなくても構いませんが・・・)
有れば教えてください。
194 :
Be名無しさん :2005/07/09(土) 08:12:47
197 :
172-174 :2005/07/10(日) 15:23:47
今、EOTAのソースを閲覧してるのですが、Eota/boot/1st/Makefileにある dd if=a.out of=1stboot_hd bs=32 skip=1 count=16 2>/dev/null を改造して dd if=1stboot.bin of=1stboot.img bs=32 skip=1 count=16 にしてみようと思っています。 それと、2>/dev/null ~~~~~~~~~~~~ この部分は何を示しているのでしょうか?
エラー出力をニフラムするの。それくらい自分で調べないとお先真っ暗よ。
200 :
199 :2005/07/10(日) 15:33:55
かぶってごめんなさい。さよおなら。
>>198-199 ありがとうございます。
今、
>>197 を試してみましたが
>>185 と同じメッセージが出ただけでした(´・ω・`)ショボーン
やはりBPBを改造しないと無理っぽいです。>>FATを潰さずに(りゃ
Monaの1stbootの先頭部分でBPBの設定をしてるじゃないですか。そっからパクってみたんですけど、結果的に同じっぽいです。
バイナリで直接入力しかないのでしょうか?
>>202 逆にMonaの1stbootを削って自分のコードをつなげてみな。
>>202 スキップしてずらしてんだからあたりまえ。
自分のやってることが分かってないで、
闇雲に真似てるだけの駄目人間だな。
>>203 どの辺から削るべきでしょうか?やはりディスクリセットが終わったあとからでしょうか?
>>205 そんなもん自分で考えろ
分からなかったら削るんじゃなくて改造していじってみろ
自分でコード書くのはそれからだ
ヲマエみたいの毎年出てくるな。もうそんな季節ですなぁ。 ヲマエに悪気がないならしばらくここで聞くのやめれ。 うるせカンケーネーヲレの勝手だヴォケってんならご自由に。 199さんや206さんがなんで怒ってるのかよく考えてみろ。 間違っても仕切り屋が煽りくれてるんじゃねーぞ。 ヲマエの質問文にゃなにひとつ自分で努力した跡がねーのよ。 自分がもしこんなふうになにからなにまで教えて君されたら ムカツクだろ?悪いこといわんからすこし間を空けて自分で いろいろ試行錯誤してもういっかい質問してみれ。
>207 ヒゲ
209 :
Be名無しさん :2005/07/12(火) 22:31:51
話を変えてみる。 フリー用のPC用トロンを実装するという試みはかつてあったのでしょうか? (2ch初心者なんで、過去ログを全て把握してないですごめんなさい。) 仕様が無料で公開されてて作れるはずなのに、作ってる人がいないなあと思ったので、 ちょっとここで聞いたりしてみました。まあ、仕様と実装は別物ですから、 ないのも当然なのかなあとちょっぴりしょぼくれたりしていました。
211 :
209 :2005/07/12(火) 23:41:43
>210 ありがっとお。こんなにあったんだ。 知らなかった。今度よく調べてみます。 うーむ。トロン流行ってほしいなあ。
212 :
Be名無しさん :2005/07/13(水) 00:10:16
【ありがとう】橋本真也 追悼オフ【破壊王】
http://off3.2ch.net/test/read.cgi/offevent/1121074170/ みんなで破壊王を見送りましょう。
葬儀日程
通夜:7月15日(金)18時
葬儀:7月16日(土)12時30分
場所:一休庵久保山式場 神奈川県横浜市西区元久保町3-13
最寄駅:京浜急行線 黄金町 駐車場:15台(全館貸切の場合、30台)
横浜駅西口から久保山斎場まではタクシーでは
所要時間10分〜15分、料金は1,220円〜1,380円です。
1,220円は混雑を加味しない料金です。
3〜5分程度の混雑を考えた場合、1,380円位になると思います。
(実際は1分55秒で80円加算です)
バスは
京急黄金町駅から32系統久保山経由保土ヶ谷車庫行き →久保山霊堂前
横浜駅西口からは4番乗り場68系統久保山経由滝頭行き→久保山で下車してください。
なお、久保山バス停からはかなりの上り坂です。
213 :
Be名無しさん :2005/07/15(金) 20:06:33
ひげぽんさんにとって,もはやココは邪魔なだけ。さっさとスレ消費しちまおう。
OSを作ろうスレはどうなるんですか?
>>213 このスレはもはや卑下と関係ないから。
>>214 卑下と関係ないOSを作るためのスレ(ここ)は現状維持だろうね。
卑下スレはすぐ埋め立てられる状況では建てても仕方ないね。
2ch発祥って事実には影響ないから未来永劫2chベースである必要はない。
実際、かなり前からら卑下自身スレにはほとんど顔出してなかった。
スレなしでblogとWikだけでもまったく支障ないんじゃね?
巣立ちみたいなもんですな
>>214 【クロスプラットフォーム】BayGUIを語るスレッド【Mona】を立てて進行してください
卑下が来なくてもMonaを語れるスレッドを。
Wikiへ逝けってことだろうな。。。
しかし、議論する場所が無いつーのは不便な気がするな。 俺OSの道を突き進むからそんな場所はいらねーつうことか。
>>220 何を今更(w
ここ1年スレでまともな議論なんか皆無だったじゃん
どうでもいい議論ならあったような気もするが… まあ漏れはこの先も生温かく見守るだけだな。 wikiとか日記コメントで議論する気になれん。
卑下はこの事態をどう責任とるつもりなんだ?
ume
うめ
プロテクトモードに移行した後に、A20を有効にしようと思って void enable_A20(void) { while(inb(0x64)&2) ; outb(0x64, 0xd1); while(inb(0x64)&2) ; outb(0x60, 0xdf); while(inb(0x64)&2) ; outb(0x64, 0xff); while(inb(0x64)&2) ; } という関数を呼び出したのですがBochsがCPU_LOOP 1というメッセージを 延々と吐いて何もしなくなります。 初めて読む486からまるごと移してきたので自分でも何をやっているのか よく分からないのですが、どうしたらよいでしょうか? inb,outbは以下の通りです byte __inline__ inb(long port) { byte ret; asm volatile ("inb %%dx, %%al": "=a" (ret) : "d" (port)); return ret; } void __inline__ outb(long port, byte value) { asm volatile ("outb %%al, %%dx": :"a" (value), "d" (port)); }
あ、もう一点違うね。 最後にウェイトしてない。
231 :
227 :2005/07/19(火) 00:30:36
>>229 >>228 さん、ありがとうございました。
>>228 さんの提示してくれたソースっぽくwhile()の中身を書き換えたら
まともに動くようになったんですけど、
>>227 を呼び出している状況では
確実にプロテクトモードなんです。
とりあえずのIDTRとGDTRを設定して、cr0の最上位ビットを1にしたら
プロテクトモードには移行できてるんですよね?
なにか違いはあるんでしょうか?
233 :
227 :2005/07/19(火) 00:57:21
できたと思ったら何故か再びできなくなりました。。。 trace-onにしてしばらく追っかけてたら一応enable_A20は呼び出されているんですが、 それから突然CPU_LOOP状態になります。 このCPU_LOOP 1ってなんなんでしょうか?
235 :
227 :2005/07/19(火) 01:40:43
>>234 さん、ありがとうございます!
とりあえずリアルモード中にFreeBSDのソースを張ったらできました!
とりあえず今日は眠いので明日吟味してみようと思います。。。
ところでこれのチェック方ってありますか?
>>235 ちょっとは調べてみてくださいね。
ttp://database.sarang.net/study/OS/os-faq-memory.html 要するに20bit以上のメモリアクセスを可能にするということです。
20bitということはつまり1MBということです。
これをやらないといくらプロテクトモードでも
[00000]〜[fffff]までしかアクセスできません。
[100000]の値を見れば、アドレスがマスクされて、
[00000]を指していることが分かるはずです。
実はリアルモードでもチェックできます。
A20が有効なら[ffff:0010]が[100000]を指すはずです。
A20制御ってリアルモードのうちにやっといて プロテクトモード移行前にA20有効かどうかチェックするのが定石だよね
この手の奴アセンブラ以外で書かれると、かえってワケワカランな…
cliしてないだけだったりして<無限ループ
>>236 > 実はリアルモードでもチェックできます。
> A20が有効なら[ffff:0010]が[100000]を指すはずです。
HMAってやつですな
>>239 できたりできなかったりってとこがそれっぽいね
liloとかminixのブートローダのソースを読むのもいいかも
>>243 LILOのソースを見た上で言っていますか?
LILOでA20はいじっていません。
というか汎用IPLでそんなとこをいじったらまずいわけです。
MINIXうんぬんは、LILOと比較する部分ではないですね。
ブートローダのソースはGRUBを読むのが一番いいです。 ブートローダを一から作るよりGRUBに精通して改良して使うのがいいです。
A20の話をしてたんだと思うんだけど。
>>245 HDDに複数のOSを入れてマルチブートする段階になったら
そんなの自作するのはOS開発の本質から外れるから
汎用のブートローダを使った方が良いだろうけど、
勉強のためFDから起動してみる最初歩の段階では
リアルモードとかBIOSとかの勉強が目的なわけだから
GRUBをいじるとかは方向性が違うと思う。
BIOSにA20制御なかったっけ? INT 15hの拡張ファンクションあたりにあったような気がするんだが。
qemu上で開発したいんだけど、どうしたらqemu用のブートイメージを作れるんだろう…?
>>250 make installで生成される通常のブートイメージがそのまま使えますよ。
$ qemu -localtime -cdrom bin/mona.iso
>>251 それMona?
ここはMonaのスレではない。
>>250 は自作OS開発のことを言ってるみたいだけど。
253 :
251 :2005/07/20(水) 19:13:33
スマソ。最近の動向ヲチしてなかった。
>>250 FD作って、それ吸ってイメージにする。
効率悪いけど。
#そのへん調べられない状態で手を付けて、
#うまくいくのかかなり疑問であるが…
ところでなんでOSASKやらMONAはFAT12ぐらいしかファイルシステムをサポートしてないのだろう?
なんかMS一色だな。といってもMONAはISO9660も実装するんだっけ?
簡単な上にどこでも読み書きできるからの〜
12bitの取り扱いがうざいけど。
>>257 もう入ってるんではないかと。
ブートセクタから次のローダを読み込んで実行すると、何故かCPU_LOOP1でbochsが 無限ループにはまります。 原因を調べてみた所、Cで書いた関数内でGDTを設定しようとしている所に問題が あるようなのですが、どうしてもわかりません。 そのCの関数が int cstart(void) { /* set 0th gdt */ setsegdesc(0, 0, 0, 0, 0); /* set gdt for setup */ setsegdesc(0x8, 0x20200, 0x1000, typeCODE, smallseg, DPL_0); setsegdesc(0x10, 0x20200, 0x1000, typeDATA, smallseg, DPL_0); setsegdesc(0x18, 0x10000, 0xfff, typeSTACK, smallseg, DPL_0); return 0; }
後は別のファイルに
void makesegdesc(segdesc *desc,
long addr, long limit,
byte segtype, byte seg32type,
byte dpl)
{
desc->baseL = (word)(addr & 0xffff);
desc->baseM = (byte) ((addr >> 16) & 0xff);
desc->baseH = (byte) ((addr >> 24) & 0xff);
desc->limitL = (word) (limit & 0xffff);
desc->limitH = (byte) ((limit >> 16) & 0x0f) + seg32type;
desc->type = segtype | (dpl << 5);
}
void setsegdesc(word sel,
long addr, long limit,
byte segtype, byte seg32type,
byte dpl)
{
makesegdesc(&gdt[sel
>>3 ], addr, limit, segtype, seg32type, dpl);
}
この関数を定義しています。
デバッグしてみた所、
(0) [0x0002029e] 2020:009e (unk. ctxt): call far c700:0000 ; 9a000000c7
<bochs:876>
CPU_LOOP 1
Error: (0) print_guard_results: guard_found ? (stop reason 0)
Next at t=739471
こういうメッセージをずっと吐き続けます。
どなたかアドバイスお願いします。
261 :
259 :2005/07/21(木) 21:07:01
setsegdesc(0, 0, 0, 0, 0); この部分だけだとエラーは起こりません。 というか、2バイト以上の値を扱うと同じようなエラーになるっぽいです。 return 0xffff;とかでも同じエラーが起こります。
call far c700:0000 そもそもこれが正しいとは思えないんだが。
263 :
259 :2005/07/21(木) 22:03:59
>>262 はい。このバイナリは0x20200からおかれているので
それが明らかにおかしいです。
でも何でコンパイルした結果そんなバイナリが出て来るのかが謎です。
何かパラメータとの問題があるんでしょうか。。。
コンパイル結果を逆汗して、併せてBochsで追えばいいじゃん。 それで分かんないってのならCで組むのを諦めた方がいいよ。
コンパイラにアセンブリのソースを出力させて意図通りか確認するとか
確認できるスキルがあればとっくにやってんジャマイカ
CPUの機能を操作しようと思うならアセンブリくらい知っておいた方が…
意図してもいないのに90x60文字モードになってしまう。。。
おっと80x50文字モードだった・・・ orz
ここに触発されてDOSを書きはじめました。 (マルチタスクのフルOSは面倒くさいのでDOSです) ようやくFAT12のMBRが書き終わり、カーネルを実装しようというところです。 素のDOSのように16ビットにするか、V86にして カーネルを32ビットで書くかが悩ましいところ・・・
>270 その意気やよし! それでは甚だ僭越ながらおれが名前をつけてやろう。 「OS/2ch」 でどうや。
マルチタスクもないのに OS/2 もどきとは如何に
2ch-DOSはどう?
274 :
270 :2005/08/06(土) 18:11:37
ドラクエの名前入力から先に進まない身としては、
OSの名称は悩ましいですね。
とりあえずコードネームはつけてありますが、
名前は後でかえるかもしれません。
作っているもの自体は公開していませんが、進捗は
以下においていきます。
ttp://hovweb.hp.infoseek.co.jp/ EMSとかの余計なAPIが増えそうな予感がしますが、
カーネルを32ビットにすればgccが使えそうということで、
とりあえずV86を調べています。
>>274 拝見しました。
ディスク読み書きにBIOS使ってるけど、ブート中だけだよね?
BIOS使わないDOSになる予定なんだよね?
BIOS使うに決まってるだろ
>>275 今のところ、ディスクアクセス自体はv86に切り替えて
BIOSを呼び出すつもりです。
ファイルシステムドライバは32bitで書きます。
>>278 270-DOSのほうがわかりやすいですねw
ディスクアクセスは、個人的にはBIOSを使うほうが
安全だとおもいます。
直接アクセスの場合、例えば
Serial ATA II以降のATA HDDでは
専用のアクセスコードを入れないと(つまりレガシATAコードでは)
動きませんが、BIOS経由であれば動くはずです。
>>279 NWSOSでもV86でBIOS経由アクセスですね。
ただ将来的なことを考えるとV86は微妙です。
ロングモードからV86は扱えないからです。
AireOSではリアルモードのエミュレートで
ロングモードからBIOSコールを考えているみたいです。
>>280 AMD64でDOSやBIOSをエミュレートしたい場合は、CPU命令を
フルソフトエミュレートするか、レガシモードに一時的に
切り替えればできるとおもいます。
ただ今回の場合、V86が動かない環境だとDOSそのものの
存在意義がなくなりますので、あまり問題にならない気がします(^^;
>>280 の「リアルモードのエミュレート」は
>>281 の「CPU命令をフルソフトエミュレート」と同じことを言っているかと。
>>281 V86がなくてもプロセスもBIOSと同じエミュレートで動かせばいいのでは?
XP(64)では16bit環境が完全に切り捨てられたので、
MSですらやらないことを敢えてやるのはそれはそれで面白いかも。
せっかくOSを作ろうという香具師が出てきたのに 今から64bitうんぬんでハードル高くして つぶすのはどうかとおもうのだが
>>284 こんなのは遅かれ早かれ言われることでしかない。
潰すと決め付けることこそどうかと思うのだが。
逆に、V86を避ける言い訳にロングモードを持ち出して、
ロングモード自体も時期尚早と片付けることで、
ハードルを下げようとした人も見たことあるよ。
>>282 リアルモードに戻すのかとおもいましたが、
いわれてみればそうみたいですね。
>>283 説明不足でした。ソフトエミュレートのコードがあれば、
64bitのカーネルからでもv86同様のエミュレートは
あまり難しくないと思います。
そのときはBIOSもエミュレータで動かせばよいと思いますので、
独自のディスクアクセスコードは書かなくてよいと思います。
XP64がDOSサポートを打ち切ったことで、
将来的にCPUからv86が削除される可能性は考えられます。
そのときは、Long mode 上でのエミュレートに切り替えないといけないでしょうね。
それを視野に入れると、アセンブラコードやアドレスキャスト等はカーネルに
あまり混入させないほうが良いことになります。
270-DOSでは動かす対象が16bitのDOSということで、
v86がハード的にサポートされていればv86を使いたいところです。
32bitモードでも64GB(PxE)までの物理メモリアクセスが可能であることを考えると、
現状ではメモリ拡張で得られる利点よりも速度ペナルティのほうが大きいと思います。
287 :
280 :2005/08/13(土) 10:43:21
今までプロテクトモードに切り替えてv86でBIOSを 呼ぶ実験をしていました。 GP(0)の実装がいるために少し手間かかりますね。 ようやくv86の動作を確認できましたので、 32bitでのカーネル作りスタートです。
静かになったな
とりあえずサンプルを元にブートしてhelloworldまではできたどー さてどうやってカーネルまで行こう… 遠いなぁ
夏の終わりにこの程度だと今年は何もないね。
FATドライバのうちファイル読み込み部分を クロス開発で書きました。 カーネルからファイルが読めるようにするには、 これとディスク読み込みとバッファ管理が必要でしょう。 地道な作業ですね。
270-DOS期待しております。 DR-DOSもEnhanced DR-DOS Projectが進んでおりDOSが再認識されている のもありますが、DOSはやはりOSを勉強する上で一番まったりしていてよろしい ですから
test
初歩的な事ですが教えてください。 現在、IPLからローダ(16Bit Code)を読み込みカーネルを読み込むコードを作成しています。 カーネルは640Mb未満に読み込むのが良いのか1Mb以上の領域に読み込んだ方が良いのか 悩んでいます。 将来的には仮想86モードをサポートしたいと思っていますがメモリーレイアウトか?です。 カーネルを作成する場合はカーネルを何処に読み込んだらシステムとして最適なのでしょうか?
>>295 悩むならとりあえずWindowsと同じにしておけば?
>>295 悩むなら下の方でいいんでないの?
全部読んでから正しい場所にまとめて転送すりゃいいんだし。
上の方はプロテクトモード経由になるからちとめんどいぞ。
で、最終的には100000hあたりに転がしておけばいいんではないかと。
カーネルが640Kを越えない自信があるなら、下の方にそのままでもいいと思うが。
298 :
295 :2005/08/30(火) 23:50:53
>>296 2G or 3G にカーネルを読み込むって事ですね。
>>297 確かに面倒なんですよね。
でも、コーディングが下手なんですぐ640KB超えそうです。
100000hあたりですか…、もう少し検討してみます。
皆さん有難う御座いました。m(_|_)m
リアルモードで1M以上のメモリに読み込むには HIMEM.SYSが使っているINT 15h/AH=87hが使えるよ
>>299 それサイズの制限があるから、いまいち効率が悪いんだよなあ。
そういえば、segment limitいじってリアルモードから32bitアドレスを
扱うなんて技があったような記憶が。
<昔話> プロテクトモードの技術が未熟だった頃は良くお世話になってたよ・・・ ちなみにMEGOSのリアルモードで32bitアプリ云々ってのはコアになる技術が このUnreal modeと某仮想マシンだったりするのよね(´・ω・`) </昔話>
きんもぉーっ☆
Unreal modeってほぼ全命令にprefixつくから 仮想86の使い方さえ覚えてしまえば あまり使う価値なさそうだね
prefixつけるunlong modeとかないの?
>>305 64ビットモードにはprefixで16ビットアドレス指定する方法はなかったはず
307 :
306 :2005/09/03(土) 16:45:38
org 16ビットモードにはprefixで64ビットアドレス指定する方法はなかったはず
308 :
306 :2005/09/03(土) 16:46:55
orz.. そういえば、最近話題のハードウェアエミュレータは 16ビットのエミュレーションついているのでしょうか?
309 :
295 :2005/09/03(土) 23:47:17
>>299 は
>>301 のテクニックを使用しているような気がします。
unreal mode はセットアップでは使える技術の様なので研究してみます。
>>304 32Bitのプログラムが使えないって事ですか?
16Bit CODE から unreal mode に移行後、32Bit CODEで動く気がするんですが?
>>309 >>299 はunreal modeではなくて普通にprotected modeに切り替えるもの
real に戻るのが面倒くさかった286時代につくられた
real -> protected -> メモリコピー -> realに戻る
を自動的にやってくれるBIOSコール
A20ラインも勝手にいじるはず
当然386以上でも動く
unreal modeの場合、普通はコード・スタックの
デフォルトモードは16bitにして必要なときだけprefixつける
デフォルト32bitにすることも可能なのかもしれんが、
少なくともその状態ではBIOSは呼べない
311 :
309 :2005/09/04(日) 10:51:28
v86経由でディスクアクセスができるようになりました。 次はバッファ管理です。地道・・
>>312 > v86経由でディスクアクセスができるようになりました。
Monaが避けて通っているところを真っ先に実装したのは興味深い。
だからどうだってことはまったくないのだけど。
270DOSで、MonoViewが動く夢を見たい
こんにちは、OSを作りたいと思っているものです。 大学で受験したTOEICの結果はすさまじい物でした。 Score 225 目を疑いました、この様子でPOSIXを読めるのか心配です。
MonoViewってWin用だとおもっていたのだがDOSで動くの?
>>315 電子辞書を1つ買ってしばらく自力で読んでいれば
英語なんてそのうち苦にならなくなる
まあ、最初は全くわからんかもしれんが
ようやく.COMや.EXEが読み込めるようになりました。
以下はbochsでFreeDOS付属のCOMMAND.COM(EXE型実行ファイル)を
起動(COMMAND.COM /P)したときのスクリーンショットです。
ttp://nur.ath.cx/no0/pb/src/1126338408526.jpg 一応コマンドラインで入力できるところまではいきました。
まだFATへの書き込みが未実装だったり、
多数の未実装システムコールがあったりしますが、
多少はDOSに近づいてきた感じがします。
スクリーンショット中、時刻がおかしいのはダミーで0を返しているためです。
kernel panicを起こしているINT 21h/AX=6900hは
ボリュームラベル取得のシステムコールです。
>>313 対象がDOSで協調を考えなくて良いため、
v86への切り替えはおもったほど大変ではないです。
INTやHLT、IN/OUT系の命令をエミュレートして、
プロテクトモードの割り込みのうち必要なものを
リアルモードに返すようにすれば動くとおもいます。
>>318 うおー、すげーーーーーー!!!
COMMAND.COMがEXE型ってのがよく分からないんだけど、
COMMAND.COMは0100hから展開する生バイナリじゃないってこと?
>>318 未実装のシステムコールならエラーで戻ってもいいんでないかい。
>>320 64K越えたのでEXE形式にしたんでないかと。
>>320 FreeDOS用のcommand.comの中身は普通の.EXEのようです。
リロケーションまで実装しないと起動しませんでした。
オリジナルDOSのものはおそらく.COMなのだとおもいます。
>>321 確かにエラーで戻ればよいとおもいます。
ほとんどのDOSコールはAX=1、cflag=1として戻れば
問題は起こりません。(期待通りに動くかどうかは別として)
リリースする場合はそうなるでしょう。
現状では故意にkernel panicにしています。
kernel panicにすれば実装後まで動かないため、
実装のモチベーションが上がりますw
>>322 昔は本当に.com形式ですた。
時代の流れとともに機能が追加されて肥大化した結果、
64Kの壁に突き当たってしまったので、EXEにして逃げたてな所でしょう。
#そういえばマルチセグメントCOM形式なんてのもあったような…
名前がCOMMAND.COMなのは互換性のためでせう。
などと昔話をしてみる。
今まで主にbochsで開発していたのですが、
実機で起動してみました。
ちゃんと起動して、コマンドプロンプトも出ました。
それは良いのですが、手抜きでセクタごとにINTを発行する
コードのせいでFDD読み込みが遅い問題が明らかに・・・
ディスクアクセスのチューニングが必要なようです。
>>323 FreeDOSの機能満載COMMAND.COMだからEXE型なのかと
おもっていました。
MS純正のCOMMAND.COMもEXEなのでしょうか。
DOS6までは純粋なCOM DOS7以降はEXEだった気がするお
純正DOSもEXE型なのですね。 まあ、COMMAND.COMの中身がEXE型でも 困るアプリはおそらくないのでしょう。 各種拡張メモリの仕様を読んでみました。 XMS -> 実装は比較的簡単そう EMS/UMB -> paging 実装すれば何とかなりそう DPMI -> かなり大変そう、シングルタスクのフルカーネル書くのとあまり変わらない? VCPI -> まあDPMIがあれば不要でしょう。カーネルが32bitだと実装は無理? いずれにしても、膨大なプロテクトメモリを どうやって管理するのが効率的かが課題なのでしょう。 リアルモード部分が完成したら、これを考えるところからですね。
Linux上で動く仮想OSの開発とかってここではスレ違い?
EMM386とかはpagingで実装してるね VCPI/DMPIはいろいろと微妙やねぇ WINのDPMIホストはたしかサブセットだった気がする
>>326 DPMIすか。
まあ実際にハード叩く部分はDOSが下請けになるので、多少楽だと思いますが。
>>328 サブセットつーか、Ver0.9準拠だったような。
何が違うのかは忘れた。
バージョンが違うんだったっけ DOS起動中にEMM386とかのDPMIを使ってる常駐プログラムが WINが起動するとDPMIのサポート範囲が変わって誤動作する事があるとかないとか そんな話を聞いた事があるですよ
DPMIじゃなくてXMSの方だったかな・・・記憶が曖昧でつ(;´・ω・`)
リアルモードでPOSIXに互換 or 近いようなOSって作れますか?
DOS部分も全然完成していないのに
DPMIの実装を少しずつやっています。
メモリ管理はなんとかなるとしても、LDTの管理が面倒・・・
>>328 DPMI1.0の追加機能は2種類の例外処理、FPUエミュの
制御など、ないと困りそうなAPIが結構あります。
1.0は0.9の上位互換ですが、もしWinの起動などでDPMIが
1.0から0.9に落ちた場合、互換問題が出そうです。
>>329 ハード叩くコードを書く必要はありませんが、LDTを
フル活用する必要がありますね。
カーネルがプロテクトモードなのに、フック対策として
INT 21hは一度仮想86に戻さないといけないようです。
無駄の多いAPI群だなあ・・・
unsigned mem=dpmi_alloc_pmem(1024 * 1024); int sel=dpmi_alloc_selector(); dpmi_set_selector_base(pldt,mem); // ベースは1M以上になる dpmi_set_selector_limit(pldt,1024 * 1024); mov ax,sel mov ds,ax mov es,ax .(略) こんなセレクタがDPMIのAPIに渡されるわけですね。 base が 0 以外で大変・・
MEG-OS復活?
337 :
Be名無しさん :2005/09/30(金) 21:07:02
これからOSを作ろうとしてて、それ用のPCを新調したいんですけど 余計な機能を満載したノートで開発はじめるとやっぱり大変なんでしょうか? 因に、VAIOのType Sが欲しいなぁと思ってるんですが
>>337 基本的に自作OSを動かすのは古いPCのほうが良いよ
新しいPCだとレガシATAポートでHDDにアクセスが
できなかったりして大変
ただし
>>279 のようにBIOSを使うなら問題なし
ディスクとビデオはBIOSでアクセスすれば
どの機種でやっても同じ結果になる
サウンドやネットワークはたぶんBIOSが提供されないので
ドライバを準備しないと使えない
い つ だ っ て ?/⌒ヽ????? ?/⌒ヽ???? ( ^ω^)??? 秘技!糞スレの構え ( ^ω^)??? / ? \ ??? ? / ? \ ?⊂? )? ?ノ\つ? ?⊂? )? ?ノ\つ? (_⌒ヽ ビシィィィィィィィイ ? (_⌒ヽ ヽ ヘ } ??? ヽ ヘ } ? ? ノノ?`J ??? ? ノノ?`J
とりあえずOS開発の初期段階はエミュでやれ。 これなら実機が何であろうと関係ない。 ま、エミュと言っても癖はあるがな。 QEMUをベースに、Bochs、VMWare、VPCのすべてで動けば、 当たり障りのない互換機では動くと考えて差し支えない。
342 :
337 :2005/10/01(土) 00:31:15
>>338 ,339,341
参考になりました。一応、ノート買っても大丈夫って事っすね。
最終ターゲット環境に近いスペックでしかも持ち運べる環境が欲しい、けど、
認識出来ないパーツがいっぱい付いてると不味いのかなぁ、デスクじゃないと不味いのかなと不安だったんです
ホントにありがとうございました。
>>341 qemuは一部のチェックをしないため癖をしらない場合は注意が必要
遅くてもbochsのほうが安全
例えば、qemuはセグメントのリミットをチェックしない
Thread local workをfsやgsに使うとか考えると
使い方によっては他のエミュをベースにしたほうが良い
DPMIを一時中断してFATドライバの実装をすすめ、 ようやくファイルへの書き込めるようになりました。 これで一応、ファイルのコピーができます。 FDDベースのDOSとしてはだいぶ実用レベルに近づいてきたようです。 まだ削除やリネームはできませんが。 次はどのメディアをサポートすべきか・・・やはりHDD?
MonoViewって何?
馬鹿野郎、バグだらけ、使ったとしてせいぜい音楽鑑賞だけ、 APIも混沌としたWindowsに一万も払えるか。 Linux、暇がないのにディストリビューションごとに対応したソフトウェア を構築しなければならず、それに対応するため細かい作業を必要とする。 ふざけるな、統合し、整備され、開発のしやすい、エンドユーザーに優しい オペレーティングシステムが必要だ。Cはもう知っている。 「アセンブリ言語の教科書」を購入した。 今、.............................俺は新たな第一歩を踏み出した。
システムコールを作りたいのですが syscall、sysentryを使いたいのですが AMDかINTELによって処理を変えたりとか 何かしないと駄目ですか?
i386ならsysenter一本にした方が楽 AMD64なら逆にsyscall一本の方が楽 AMDかIntelで分けるのはあまりお勧めしない
350 :
Be名無しさん :2005/10/08(土) 17:04:12
私も
>>346 の書籍を購入したのですが、今、Linuxしか入っていないので
はじめのdebugコマンドによるサンプルが打てないのですがどうにかして
Linux上でNASMを使っていきたいです。
どう読みかえていったらいいでしょうか?
351 :
Be名無しさん :2005/10/09(日) 22:01:51
プリエンムティブなマルチタスクOSを作ろうと思ったけど なんだかなー API(システムコール)で呼ぶ形のアプリなら 結局はAPI次第で窓やリナちゃんでプログラムと変わらない やはり、PGの学力が低下したといわれるこのご時世だからこそ ローレベルなファンクションコールが実装された最速なDOS これが漏れらハカーー予備軍は求めている 今、新しい一歩を踏み出した・・・・ と思うのですが、64bit(最低でも32bit)で高速なDOSって 興味ありませんか???
ない。 プリエンムティブってなんだよ。プリエンプ恥部だろ
高速DOSが楽しいかは別として、癖の強いOSは欲しいな。 POSIX準拠のシステムコールとか、レガシーなランタイムとか 見慣れたシェルはLinuxで飽きたな。アプリ移植する気にもならんよ。 面白いOSを誰かつくってくれ。面白ければアプリぐらいなら作るぞ
超漢字につくってくれよ
超漢字ってBTRONなんでしょ? って聞いて萎えた
356 :
Be名無しさん :2005/10/10(月) 16:24:36
>>355 萎える気持ちはなんとなくわかるが。どのあたりで萎えるの?
一応聞いとく。
357 :
Be名無しさん :2005/10/10(月) 19:17:44
WINもPOSIXもTRONももう飽きた Brain*uckしてくれる奇抜なOSを触りたい
>>357 その前にfu*kさせてくれる綺麗なおねーさんを触れよ
削除・ディレクトリ内リネーム実装完了。 フロッピーベースのDOSとしてなら一応動くレベルになりました。 今まで^C処理やエラー処理を無視していたのですが、 DOSのエラー処理は結構複雑ですね。 プロテクトモードから呼び出すのが面倒な仕様・・・
361 :
295 :2005/10/14(金) 22:52:09
270 さんすごい
>>349 私はAMDかIntelで分けるつもりでいたんですが
あまりお勧めしない理由を教えてください。
>>361 理由は書いてあるじゃん
>i386ならsysenter一本にした方が楽
>AMD64なら逆にsyscall一本の方が楽
逆に貴女が分けようとした理由を教えてちょ♥
>>360 Monaはファイル操作APIがあまり整備されていないのでしょうか。
DOSの欠点はシングルタスクなところですね。
DOSコールはだいぶ実装できてきました。
試しに MJL/Lite で JPEG を表示してみたら動きました。
しかし、FreeDOSのCOMMAND.COMを動かしていると
バグなのか互換性問題なのか、フリーズしてしまいます。
COMMAND.COMが動かないと事実上つかえませんが、
難易度高そうです。
自分で実装するのとどちらが良いかな・・
>>363 Monaは飽きたら放置で次のことの繰り返しだからすべてにおいて中途半端
シェルぐらいゎ自前で実装しませう シェルゎOSの顔ですよ(´・ω・`)
シェルといえばDOSシェルなんてのがあったな 使った覚えがないがw
>>365 互換性テストとしては意味があるのでは
>>366 そこでFDですよ
先日作者が他界しておられたことが判明しましたが・・・
368 :
295 :2005/10/16(日) 23:05:19
>>362 それぞれのCPUで最適化が行われていると言われているからです。
>>349 では「が楽 」と言われているので逆の「がメンドイ」及び
あまりお勧めしない理由をの部分を
お聴きしたかった訳ですが
>>363 FreeDOSならソースあるんだし、追いかけてみればいいんでは。
本物はメモリをけちるためにヘンな構造になっていたような気がするが、
FreeDOSのはそんな事無いのかな。
>>368 そういう枝葉な部分はモノが出来てから考えた方がいいような気がするんですが。
とりあえず呼ぶ側の手間も考えてくれ。
370 :
295 :2005/10/17(月) 20:54:50
>>369 今は設計段階で色々考えている最中で
あれこれ考え過ぎになってるようです。
取りあえず雛形を作ってみます。
>>365 そうですね。。
カーネルが終わったら作るかもしれません。
>>369 クロスデバッガのようなものが手元にないため、
COMMAND.COMクラスの規模になると、
例えソースがあったとしても追いかけるのはきびしいとおもいます。
最終的には、追いかけることになるのかもしれませんが。。
フリーのデバッガのEXDEBが動くレベルまでは互換性が向上しましたので、
フルアセンブラで書いた単純なソースならこれでデバッグできます。
テスト用のプログラムを書いてデバッグするのが良いか、
追うしかないのか。。
>>371 初期化で止まるんであればprintfバラまいておけばいいんでないかい?
安易にデバッガに頼るとウソ情報にだまされることもあるぞ。
考えた結果、シェルも自前で実装してみることにしました。
かなり時間がかかりそうです。
>>372 プロンプトは出ます。
入力したコマンドとディレクトリによって止まります。
printfをばらまく方法はおそらくあるとはおもいますが、
そもそも 16bit コンパイラの TC++ がWinで
動かないのが痛いです。
半分くらいのシステムコールを順に呼び出すテストプログラムを書いて
デバッグを行ったところ、動作するプログラムは増えたみたいです。
FreeDOSのCOMMAND.COMは相変わらずだめですが。。
>>373 TC4ならDOS窓で使った記憶があるが。
あれは配ってないのかな?
375 :
Be名無しさん :2005/10/28(金) 22:26:39
>>374 TC2とTC++1はおいてありましたが、
それ以外もあるのかはわかりません。
シェル書いています。今さらフルアセンブラで。
コマンドライン入力、EXEやCOMの実行をつけました。
つぎはCDなどの内部コマンド処理を書きたいところです。
シェルを書いていたら、truenameシステムコールに 致命的なバグが見つかりました。 これを修正したらFreeDOSのCOMMAND.COMも ハングしなくなったようです。 今までフロッピーの入れ替え検出について 何も考えていなかったのですが、おもったより大変そうですね。 attention 割り込みが使えるのか、BIOSでpollingしかないのか。。 他の和製OSの検出方法も気になります。
その辺の和製OSはそんな真っ当な処理してないと思う
そもそも、PC/ATにはディスク交換をハード的に検出する機構が 無かったような気がするのう。 DOSは一定時間でバッファをフラッシュする仕掛けになってたような。 昔話すぎて詳細が思い出せん。
その辺のことKがぼやいてた筈 雑菌あたりが知ってるかな?
>>380 現在のOSASKに関しては、ディスク交換はInsertキーで手動検出。
変更の適用もDeleteキーで手動。
DOSについてはよく知らないのでパス。
382 :
Be名無しさん :2005/11/08(火) 19:02:55
OSを作る為に、新しく開発環境を買おうと思ってるんだけど OS作ってる人達って、実際どんな環境(OSと開発環境ソフト)で開発してるの? あと、お薦めの構成とかありましたら教えて下さい。
>>382 漏れは、Cygwin + GCC(i386-elf) + EclipseCDT + Bochs を利用している。
他の人はどうなんだろう。。。
まぁ、コンパイラにGCCというのは確定だろうけどね。
384 :
Be名無しさん :2005/11/08(火) 19:41:54
俺は、vi + gcc(i386-elf) + gmake + nasm + qemu ところでMacOS X用のBochsって知らない?
387 :
383 :2005/11/08(火) 20:14:22
>>385 Toppersとか組み込み系とは無縁の人です。
ちょっと作成してみては、作り直しで全然機能が増えないorz
388 :
384 :2005/11/08(火) 20:21:25
389 :
382 :2005/11/08(火) 21:16:45
>>383 ,384
コンパイラはgccで確定っすか
gccは何となく面倒臭そうだから避けたかったんですが、
やはりボーランドとかビジュアルスタジオとかよりもOS開発には向いてたりするんでしょうか?
何にしてもお二人のような構成だと普通にWindowsXPで使えるのと無料で手に入れられそうなのは魅力っすね
>>389 横槍入れるようだけど。
Borlandは使ったことがないけど、VCなら「ある程度までなら」組める。
# VC(というかcl.exe)はC++を使うときにややこしい。
# ちなみにDigital Marsのコンパイラを使ってみたが無理だった
ただしCygwinのbinutilsを使わないといけない時点でgccの方が楽な気がします。
391 :
382 :2005/11/08(火) 22:10:18
>>390 VisualStdioは「ある程度まで」すか、
むしろgccの方が楽と...
コマンドとか覚えるの面倒そうだけどgcc以外を使ってる人もいなさそうだし、敬遠してもいらんないのね
やはり、最新のツールはファジー過ぎてOSのような機械に近いプログラムには向いてないんでしょうかね
VSとか使うと金かかるからみんなに気軽にビルドしてもらえなくなるだろうが。
>>391 OSのような一切用意された環境がない状態で動かすものは、
どうしてもリンク処理や生成するバイナリが特殊なものとなってしまう。
GCCのようなごく一部のコンパイラを除いては、
これらの問題に対するサポートがないため自力で乗り越える必要がある。
>>394 VS2005Express無料化か。Windows使いには朗報だな。
396 :
Be名無しさん :2005/11/08(火) 23:14:20
>>382 デバッグにはVC使ったほうが楽
ソースの書き方を工夫すればファイルアクセスなどは
VCでデバッグできる
>>398 GRUBにPEファイルサポートを追加する勇者が現れると神なんだけど。
>>389 >>383 ,384 さん達がGPLが嫌いなら標準ライブラリーは自作されてると思います。
俺はGPLが嫌いだから
MSYS + MinGW(pei-i386) + nasm + qemu です。
>>397 どんな風に工夫すればVCでデバックが出来るか教えてください
>>400 >俺はGPLが嫌いだから
>MSYS + MinGW(pei-i386) + nasm + qemu です。
・‥…ネタ?
>>402 MSYS + MinGW(pei-i386) + nasm + qemu
それ全部GPLじゃないの〜?
404 :
Be名無しさん :2005/11/10(木) 09:53:29
405 :
382 :2005/11/10(木) 20:32:08
みなさんの意見を参考にMinGWとNASMとBochsで環境を構築しようと ....悪戦苦闘中(リンク切ればっかりで日本語情報少ない) 時に、383さん384さん400さん、お三方ともCygwinとかviとかMSYS とか使ってらっしゃるみたいですが、 何故ですの?エディタとしてすか?それともgccだけでなく他のGNUツールも必須って事すか?
406 :
Be名無しさん :2005/11/10(木) 21:36:05
viはエディタ あとbinutilsもいるね
すみません 言葉か足りなっかた見たいです 追加前:俺はGPLが嫌いだから 追加後:俺は(成果物が勝手に)GPL(になるの)が嫌いだから これでも、俺はばーか? MSYS + MinGW(pei-i386) + nasm + qemu これらは勿論 GPL で配布されてます。
gccでコンパイルしたものが、すべてGPLになるわけではありませんよ?
GPL嫌いには二種類あるね。 1. GPL自体が嫌いなので関わらないようにする人 2. 自分の成果物がGPLになることが嫌な人 実際1の人も多いので、 > 俺はGPLが嫌いだから とだけ書かれたら1と思われても仕方ない。
横入りだけど、具体的にはどういう場合にGPLが適用されるの?
・自分で選んだ場合 ・そのへんからGPLなコードをぱくってきた場合
・GPLのライブラリをリンクした場合 ・perlなどスクリプトでGPLのライブラリ関数を呼んだ場合
GPLの影響を受けないのは ・GPLのツールで作ったデータ ・GPLのツールで機械的に変換されたコードやデータ ライセンスに注意が必要(もしGPLならGPLになってしまう)なのは ・GPLのツールによって単にコピーされたコードやデータ 具体的にはBISONやAUTOMAKE、AUTOCONFなどのツールで 単にコピーされたコードなど。多くはGPLにならない特例があるが、 あくまでも特例であり個別の確認が必要。
416 :
Be名無しさん :2005/11/12(土) 01:32:46
ところでVxWorks でプロセスの状態にPend(待機) とDelay(休止) がありますけど 具体的にどうちがうんですか?
よく知らんが一般的な実行可能状態と待ち状態のことかな? 実行可能状態はいつでも実行できるが、CPUには別のプロセスが割り当てられている状態。 待ち状態は入出力中だから、それが完了するのを待っている状態だが。 まぁ的外れかも試練が
418 :
OS& ◆WRre/7Sh7Q :2005/11/12(土) 23:04:33
ちょっと質問させてください。 IRQ0をポート0x60に設定し、IRQ1のキーボード割り込みハンドラを0x61にしていて、 キーボード割り込みを捕まえようとしています。 文字は取得できているのですが、何故か割り込みハンドラが2回連続で呼ばれます。 どなかたわかるかたいらっしゃいますか?
key down / key up が取れてるんじゃない? 後、文字じゃなくて、キーの番号が取れてるんでないかね。
420 :
Be名無しさん :2005/11/12(土) 23:08:52
>>418 ちょうど俺もそこでひっかかってるんだけどw
偶然すぎ・・・
421 :
OS& ◆WRre/7Sh7Q :2005/11/12(土) 23:32:37
>419
ありがとうございます。
key upとkey downで2回割り込みハンドラが呼ばれるってことなんですね。
これって、どっちかだけとればいいってことなのですか?
それとも、別の処理をさせたいから、2回割り込まれてるんですか?
(例えばどういう用途があるんですかね?)
勉強不足ですいません。このあたりが詳しくのってるページなどがあれば
教えてください。
>>418 一緒にがんばりましょう。
>>421 例:[→]を押しながら[↑]を押すとか判定(ゲームで斜め移動)
424 :
OS勉強中 :2005/11/13(日) 00:00:52
>> 423 おー、ありがとうございます。 (質問しまくってるお恥ずかしいところを見られてしまいました。。。)
ここでOS作ってるみなさんは言語はC++/Cとアセンブラですか?
急にスレが活発になっていますね。
>>379 pollingポートやBIOSコールは存在します。
ただ、調べた限りメディアを交換しても割り込みは
かからないようです。
DOSはおそらく BIOS で検出してます。
BIOS が検出能力を持たない場合は、2 〜 3秒で
フラッシュしているみたいです。
>>382 mingw/cygin 上で gcc、binutils、nasm を使っています。
テストコード生成には perl を使っています。
エミュレータは bochs です。
メディア交換検出は後回しにして、とりあえず
未実装のCONFIG.SYS を調べています。
デバドラのINITを呼ぶ程度であればすぐ作れそうですが、
謎な部分も多いです。
>>426 だから、ドライブが対応していないので、FDCのステータス見ても
嘘情報なのですよ。
そういやPC9801はその辺ちゃんと作ってあったんだよなあ…
>>427 レスありがとうございます。
調べた範囲では、BIOS 経由の場合、
INT 13h/AH=15h と INT 13h/AH=16h のダブルチェックで
polling判定できることになっています。
INTERRUPTリストによると、IBMやMSのDOSもこれを
使っているようですので、期待していたのですが、
この判定は疑わしいのでしょうか?
この BIOS 機能は OADG (DOS/V編)にも記載がありましたので、
未確認ですが100% IBM-compatibleであれば動作すると期待していました。
最も、ここらへんのBIOSの実装はいい加減で互換性が低そうなので
(INTERRUPTリストのBUGSにたくさん記述があります)、
例え動いたとしても相応の対策は要りそうです。
NEC 98系のattention割り込みは楽でよいですね。
Macやプレステ2で動くOS作る猛者は、いないのかな。
430 :
Be名無しさん :2005/11/15(火) 09:49:21
>>429 Macは持ってるけどハードのことよく知らない・・・orz
プレステのOSをパソコンに移植したいな。
みなさん、今どの辺りを勉強、開発又は考案してるんですか?
433 :
Be名無しさん :2005/11/16(水) 13:54:05
俺のはTCP通信も一応いけてるんだが. メモリ周りやらんといかんのだが (´・ω・`)テラメンドクサス
TCP通信ってすごいですね・・ もれは、まだDMAコントローラについて勉強中です まだまだ・・orz
435 :
Be名無しさん :2005/11/17(木) 11:27:31
よし.過疎だし俺OS作るよ. マンドクサガリだから進捗は遅々としたものになるけどね. 言語はCかC++で.性能や新しさじゃなくて OS勉強したい人が使えるようなものを目指そうかな. このスレ使ってもいいかしらん?
ある程度成長するまではこのスレ使った方がいいと思われ
437 :
Be名無しさん :2005/11/17(木) 13:33:57
じゃあ遠慮なく使わせてもらいます
idtrでつまずいてます。定義した後どうすればいいのやら・・・ monaをちまちま解析するしかないでしょうか。
>>435 普通KERNELにC++は使わないよ。
440 :
435 :2005/11/17(木) 16:45:18
>>439 いいじゃん何だって.
C++使ってるのも普通にあるんだし.
>>438 >定義した後どうすればいいのやら・・・
定義って割り込みハンドラを設定した後のこと??
442 :
435 :2005/11/17(木) 17:11:30
>>438 ベクタテーブルと割り込みハンドラはもうできてんのかな?
idtr定義ってことは後はlidtでロードしたらいいんでない?
>>438 ヒント LIDT命令
後、
『インテル・アーキテクチャ・ソフトウェア・ディベロッパーズ・マニュアル』
上巻:基本アーキテクチャ(資料番号243190J)
中巻:命令セット・リファレンス(資料番号243191J)
下巻:システム・プログラミング・ガイド(資料番号243192J)
の下巻は読みましょうね。
444 :
438 :2005/11/17(木) 17:30:08
はじめての486読みながら
typedef struct _DescTblPtr (
unsigned short limit;
unsigned long base:
) DescTblPtr;
とCソースに書いてある程度です…
>>441-443 LIDTですか。アセンブラですね。
相当時間がかかりますがアキテクチャ読みはじめます。とほほです。
445 :
435 :2005/11/17(木) 17:54:26
>>444 俺が昔書いたコードだと
typedef struct {
unsigned Limit:16;
unsigned Base:32;
}__attribute__ ((packed))IDTR_t;
んで各割り込み番号に対応したベクタテーブルつくって
その物理アドレスだったかをIDTR_tに突っ込んで
最後
IDTR_t IDTR;
asm("lidt %0 : : "m"(IDTR));
としておりますよ.
結構長いことさわってないから微妙に間違ってたら
スマソ
>>444 自分の書いたコード探してきた。定数とか.defファイルを無視すれば、どんなことやってるか大体わかると思うけど
typedef struct {
word_t limit;/* idtr limit */
word_t baseL;/* base address of idtr */
word_t baseH;
} IDT;
#undefDEF_IDT_ENTRY
#defineDEF_IDT_ENTRY(a, b) b,
static int idt_vector_index[] =
{
#include "idtentry.def"
-1,
};
extern "C" void default_handler();
voidinit_idt_table() { IDT idtr; for (int i = 0; i < NR_IDT_ENTRYS;i++) setIDT(i, (dword_t) default_handler); for (int i = 0; i < NR_IDT_ENTRYS;i++) { int entry = idt_vector_index[i]; if (entry == -1) break; setIDT(entry, (dword_t) idt_vector[i]); } idtr.limit = NR_IDT_ENTRYS * sizeof(idt_entry) - 1; idtr.baseL = ((dword_t) IDT_BASE) & 0xffff; idtr.baseH = (((dword_t) IDT_BASE) & 0xffff0000) << 16; asm volatile("lidt %0 ": :"m" (idtr)); }
static voidsetIDT(int sel, dword_t address) { idt_entry * entry = (idt_entry*)(IDT_BASE + sel * 8); entry->offsetL = address & 0x0000FFFF; entry->offsetH = (address & 0xFFFF0000) >> 16; entry->selector = KERL_CS_SELECTOR; if (sel == 0x22) entry->type = 0xee;/* DPL = 3 */ else entry->type = 0x8e;/* DPL = 0 */ entry->unused = IDT_UNUSED; }
>>440 >435
>OS勉強したい人が使えるようなものを目指そうかな.
って言ってるじゃない。C++でカーネル書くと色々欠陥が多くて困るのに
OS勉強したい人にカーネルをC++で書くのを推めるのは嫌ーな感じ。
451 :
435 :2005/11/17(木) 18:54:44
>>450 資源をオブジェクトとクラスで表した方が
わかりやすいかと思ったんだけどね.
個人的にはChoicesっぽくやろうかと思ってた.
いや,これがいいものかどうかはともかくね.
実際,カーネルCでしか書いたことないし
C++自体ようしらんし,C++でやると
ライブラリ周りかなんかが困るのかなという
認識しかもってなス.
んだばその欠陥とやらを教えてケレ.
>>451 自分では踏まないようにしてる程度だから教える知識はないわい。
C++に嵌まった人に聞くがよい。
>>451 C++で困るのは
・リンク関係
・メモリまわりを先に実装しなければならない(new演算子とdelete演算子)
ぐらいかな。
あとカーネルライブラリとかに汎用性を持たせようとすると、修飾子の都合で
C++でのエクスポートが出来ない(クラス外関数ならextern "C"でエクスポート可能)…ぐらいか。
少なくとも俺がC++で少し書いたときには特に問題は無さそうだった。
454 :
453 :2005/11/17(木) 20:10:35
もうひとつ思い出した。initとfiniを自力で呼び出さないといけない(in gcc/g++)
455 :
435 :2005/11/17(木) 20:16:34
>>453 ありがと.
作り始めはいいけど,そのうち何かしら問題でそうだなぁ.
無難にCにしようかしらん.
456 :
438 :2005/11/17(木) 20:24:58
>>446-449 素晴らしい!
既存のソースからlidtの部分だけを読み取るのに苦労してたので助かります。
家についたら解析ですー
自分はCでゴリゴリ書く予定です
win上でstringに頼り切ってる身分で何言ってるんだって感じではありますが。
OS作りで苦労するのは 1)マイクロカーネル or モノシリックカーネル? 2)ファイルシステムはマルチスレッド? かな・・・・ 自分は2)で詰まった><
458 :
Be名無しさん :2005/11/17(木) 21:32:19
さっきまでWindowsのインスコで苦労していた俺はこのスレに何が書かれているのかわかりません><
くんなよ
>>457 BIOSを使用するとマルチスレッド化は出来ないですよね?
BIOSを使用せずに IO port を叩かないといけないのかな>onz
所で質問です。
FDCを制御する場合の情報を持ってる方、URLで良いんで教えてください。
ぐーぐる先生で聞いても適切な情報を教えてくれないんです。
>>460 BIOS呼んでいる間、スレッドが切り替わらなければ別に問題ない。
どっちかってーと32bitモードで呼べない方が厳しいような。
463 :
461 :2005/11/17(木) 23:41:24
一応しょぼい知識をひけらかしますが、(駄文ですんません・・・) (FDCについての制御) ライトコントロールレジスタ(機種によって名前違うかも・・・)で初期設定をする? コマンドはFD→CPUのリードコマンドです。 まずコマンドフェーズに入る前に、ステータスレジスタを見張って、 コマンドレジスタに書き込み可能ならば、コマンドレジスタにコマンドコードを送る。 そして、そのコマンドに必要なパラメータを順次送信する。パラメータの種類や数は コマンド毎に異なります。 コマンドフェーズを終了すると、実行フェーズに移行する。ここでコマンドが実行される。 例えば、FDからデータレジスタに転送されたり・・・ その後、リザルトフェーズで後処理をする、なんちゃら ただ、理論は分かってるんですが実際にやってみろと言われると、ちょっとできないっす・・・;。;
464 :
461 :2005/11/17(木) 23:48:27
あと、後処理についてですが、実行フェーズが終わるとFDCはCPUに割り込みをかけるそうです。 その中でリザルトフェーズに移るというか、後処理をします。EOI発行だったり、FDC内にあるステータスレジスタ を数回読み込んだり(←これしないと、だめみたいです・・・すべてのステータスレジスタの値を読み込まないと次の コマンドに移れないそうです)
465 :
461 :2005/11/17(木) 23:54:18
本屋に頼んで取り寄せてもらえばいいんでは? CQなら大概の所で扱えると思うが。
>>461 DMA転送で見落としガチなのは
1)転送先が16Mを超えている(DMAは24ビットアドレス)
2)バウンダリ64Kに違反している
はずしていたらすみません
みなさんはOSを開発する上で勉強した書籍はなんでしょうか? 自分は初めて読む8086と486を買いました。 これ以外に、お勧めの書籍を教えてください。
470 :
435 :2005/11/18(金) 17:16:09
>>468 初めて読む486と
>>443 の資料(Webで落とせる)
あと,PCプログラマーズバイブルだっけかな.
紫色のでかい本.これは手に入れるの難しいと思う.
OS入門用にMINIX本って本当にいいのかな。。オレも読んでるけど。 UNIX系OSの基礎を知るにはいいけど、MINIX自体は出来の悪いKernel だと思う。 #Microkernelの概念自体が失敗気味と思う。 LinusはMINIXを見ないでLinuxを作ったと聞いた覚えが有る。実際 中身は全然似てないし。
s/OS入門用/OS開発入門用/
>>471 MINIXの欠点はマルチスレッドがない点かな。
とくにファイルシステムが単一スレッドなのが致命傷
ただこうゆう概念もあることを勉強するのもいいと思います。
ちなみにマイクロカーネルならMach3.0のソース読むといいよ
474 :
460 :2005/11/18(金) 21:39:29
>>461 おー、ありがとう。
今、出張中でゆっくり読めないけど帰ったら勉学に励みます。
>>462 V68モードで呼び出す事を想定していますが、スレッドの切り替えの
問題は同じですね。
kernel側の管理で考えます。m(_|_)m
475 :
460 :2005/11/18(金) 22:14:51
>>462 問題はあるぞ
完全BIOSであればよいのだが、I/Oポートを
直接アクセスする場合はBIOSとの互換を考慮する必要がある
例えばBIOSがUSB FDDを使っている場合に
PCI叩いてUSBを初期化する場合とか
APICを使う場合とか
知ったか乙 PCIとAPICのドライバ書けばいいだけだろ
MINIXってOSを勉強したい人のために作られてるんでしょ だから性能云々よりか単純な作りを理念に置いているらしいが・・・
エミュレーションすべきはAPICじゃなくてPICだとおもうが そもそもフルスクラッチからそこまで達するとはおもえんな 趣味なのだから好き勝手にOSを作るのは良いのだが 同じようなコードを何度も別の人が書いていて無駄な気がする コードの共有とか考えたほうがよくね?
っ[OSKit] まあ有志で用意するにしても、ライセンスどうするとか出てくるし、 それくらい簡単に書けるくらいでないとOSなんて書けねーと思うわけですが。
BIOSの中身って何処かに公開されてないんですかね?
>>480 OSKitはGPLだからなあ
ライセンスどうするかの問題はわかってる。
とはいえ、例えばFDC、HDD、LANなどのドライバコードは
みんなで作ってzlibライセンスのように
他に使いまわせるライセンスで
共有するとか、それが嫌なら
ドライバのABIを決めてバイナリコードを共有するなり
すればよいと思うわけで。
>>481 BIOSの実装は各社で別々なので
OADGのドキュメントやinterrupt listに書いてある
インターフェース仕様だけで作ったほうが良い
どうしても見たければbochsとかのBIOSならソースがついているはず
484 :
483 :2005/11/19(土) 21:49:13
orz URL消すの忘れた
>>473 Machねぇ。これも昔流行ったみたいだけど今どうなの?
あんまり使われてるの聞かない。20世紀末のアイドル?
>>478 単純じゃないよ。複雑でごちゃごちゃしているよ。
オレが読んだのはVer2.0。意外と1や3はすっきりしてるのかもね。
>>485 デスクトップOSのNo2がMachなわけだが。
>>483 レスどうもです。
そういやseekのこと考えてなかったっす・・・
試してみます!
>>485 は文句つけるだけで知識も理解力もないみたい・・・
489 :
481 :2005/11/20(日) 12:53:21
今年の5月20日に「お前は半年ROMってろ」といわれたものです。 今日でやっと半年たちました。 皆さんお久しぶりです。涙でそうです。
>>490 お久しぶりです……と言いたいところなのですが、
このスレには2005/05/20の発言は見当たりません。
とちらのスレの何番様でいらっしゃいますでしょうか?
くだらないコピペはスルーの方向で。
497 :
Be名無しさん :2005/11/21(月) 22:27:05
お前ら今年の紅白は録画しとけよ!
270-DOSが欲しいんだけどどこでダウンロードするの?
windowsでgcc nasm msysでmakeするだけでコンパイルできるCで書いてあるOSないですか… 勉強しようにもコンパイルできません… noname antos どちらの初期バージョンもコンパイルできません
>>500 Monaのちょっと前のやつ(0.2系)ならgcc nasm msysでmakeできるよ。
CじゃなくてC++だけど。
>>500 ってかmonaは出来るぞ。
お前本当にmakeだけやっているんとちゃうの?
ちゃんと
make depend
make
(make install)←いるか忘れたが
ちゃんとdependしているか?
Cygwinでもコンパイルできるからさ。
このすれヤサシス
>>502 良く嫁
>>500 >windowsでgcc nasm msysでmakeするだけでコンパイルできるCで書いてあるOS
505 :
502 :2005/11/25(金) 21:20:29
>>504 当然読んだ、ってか読みすぎたか?
>makeするだけ
dependを知らん可能性まで考えた俺は馬鹿ですかそうですか本当にすいませんでした。
>>505 Cygwinじゃないだろ?
> msys
Monaは試してないだろ?
> noname antos
507 :
502 :2005/11/25(金) 22:11:49
久しぶりに死にます。どうもすいますいますいませんでした。
どっかで見たと思ったら貴様か!
>>508 ウリのHello, world!が動いたニダ!
例外処理が甘いけどなかなかよくできてるね
512 :
は@ c178.016.c3-net.ne.jp ◆cplnFO9T0I :2005/11/27(日) 15:25:16 BE:121047438-
電源つけたら喋りだすPCを作りたいのですができますか?
どういうOSやねん。まぁ「不可能」ではない。
270さんや他の方達に質問なんですが、ハードの知識って どのくらいお持ちなんでしょうか?
うんこ
>なお、 INTの2回目の切り替えでは 16bitから32bitへの意図的な切り替えが必要になります。 >この切り替えは、例えば予め決めたアドレスで HLT 命令など特権命令を実行して#GP(0)を起こし、例外処理でそれを検出すれば実現できます。 仮想86モードからプロテクトモードへの切り替えはARPL命令を#UDでトラップするのがセオリー (#GPだと#GPハンドラが大きく複雑になりすぎるので
UD2ではなくてARPLなのはなぜ?
ARPL命令はROM領域にほぼ確実に存在するバイト値だから
520 :
OS勉強中& ◆WUQMOVkl3M :2005/12/03(土) 23:21:00
今現在、ブートローダを作成中なのですが、dmaの64k alignmentについて質問があります。 現状は、0x07c0:0000にfloppyの最初のセクタが読み込まれ、 その0x07c0:0000からの512kを0x9f00:0000に移動し、 floppyの2個目以降のセクタを0x0100:0000に読み込んでいます。 dmaの64k alignmentに従うということは、 まず、floppyから18セクタを4回繰り返し読み込み、(72セクタ分、0x1000:0000に達する) 0x1000:0000から0x2000:0000は80セクタ分なので、 18セクタ読み込み * 4回 + 8セクタ読み込み という処理を0x1000:0000から0x2000:0000, 0x3000:0000 ... というように続けていけばいいのでしょうか? どなかたご存知の方、ご教授ください。 また、この辺のことが詳しく書いてある、ページ、書籍等がありましたら、教えてください。
>>520 数字は修正がいりそうだが64kの考え方自体はそう
まとめて読み込みたいなら
トラック読み込み+コピーで書いたほうが
無難だとおもうがね
遊び感覚でVIPによってラウンジは繰り返しスレッド乱立されて
虐げられています。
本当にやめて欲しいです
ラウンジはVIPには何もしていないのに
いつも荒らされます
今回も(゚∞゚)ペーチュンチュン という名前のスレッドを
乱立されてしまいました。
今ラウンジを開くとVIPによってスレッドが乱立されて
殆ど機能しなくなってるラウンジを見る事ができます・・・
ラウンジ
http://etc3.2ch.net/entrance/
523 :
OS勉強中 :2005/12/04(日) 09:44:55
>>521 ご返事ありがとうございます。
> 数字は修正がいりそうだが64kの考え方自体はそう
数字どっか間違ってましたでしょうか?
>まとめて読み込みたいなら
>トラック読み込み+コピーで書いたほうが
>無難だとおもうがね
floppyからまとまったセクタ分を毎回同じところに読み込んで、そこから
別の場所にコピーするということですか?
そのような方法は一般的でしょうか?
まとまったセクタ分読む と言うのは正しくないな 1トラック読む
525 :
ぴゅあ :2005/12/04(日) 19:22:16
>>523 > floppyからまとまったセクタ分を毎回同じところに読み込んで、そこから
> 別の場所にコピーするということですか?
FDC, DMAに関連するコードはかなり昔に書いてたのであまり覚えてなくて
DOS/V機に載ってるDMA, FDCではコードを書いたことはないので
正確ではないと思うけど。
フロッピィから1回のDMA転送が可能なのはシリンダ単位になるだろうと思います
9セクタまでか18セクタまで可能かはわからないですけど。(FDCについて調べれば判る筈)
64Kのブロックに対して9セクタ或いは18セクタ単位では端数が出てしまうし
また9セクタ或いは18セクタ単位で必ずプログラムの介入が必要になるだろうと思うので
私は恐らく9セクタ或いは18セクタ単位で一気に取り込むバッファを別途設けて
0x1000:0000以降にはCPUで順次転送していく手を使うでしょう。
64Kのブロック単位を気にしながら
読み込むセクタ数を調整するとか
0x1000:0000以降に直接転送させるとかを考えると
ロジックは複雑になるだろうし、パフォーマンスも落ちたりするだろうと思いますよ。
526 :
ぴゅあ :2005/12/04(日) 19:24:23
>>520 > その0x07c0:0000からの512kを0x9f00:0000に移動し、
の意図は判りませんが
単に移動することだけに限定すれば(
>>525 での話も踏まえて)
>floppyの2個目以降のセクタを0x0100:0000に読み込んでいます。
を
# 先頭セクタからを0x9f00:0000に読み込む。(読み込んだものを転送する中に含める)
とした方が全体的にシンプルになったりしそうな気もしますけど。。。
初回のCPUによる転送だけ512バイト飛ばして0x0100:0000〜に転送するとか
初回は2セクタ目以降8セクタ或いは17セクタを取り込んで転送するとか
条件を付けるというのもあるでしょうけど。
DMAC, FDCについてはトラ技増刊「パソコンのレガシィI/O活用大全」辺りにも
書かれていますが(絶版らしいけど)
具体的な例まではなかったと思います。
また細かいところはDMAC, FDCのデータシート或いはアプリケーションノートなりが
探せればと思うのですけど…手に入るのかどうか?
またGoogleで例えばキー「dma fdc 8237」とかで探してみると
サンプルとかは難しいかもですが、64Kのブロック単位, ページレジスタのこととかが
出てきたりするでしょう。
527 :
OS& ◆WRre/7Sh7Q :2005/12/04(日) 20:19:01
>ぴゅあさん
お返事ありがとうございます。
>> その0x07c0:0000からの512kを0x9f00:0000に移動し、
>の意図は判りませんが
floppyの先頭512kは0x07c0:0000に読み込まれ、2個目以降のセクタは
BIOS領域の後の0x0100:0000に読み込んでいます。しかし、54セクタ
(リニアアドレスで0x7c00-0x1000)以上読み込むと、現在実行中である
ブートコードを上書きしてしまうためにこのようなことをしております。
そのため、ビデオメモリなどの領域(0xA000:0000〜)に重ならないリアルモード
で使用できる一番後ろのメモリ領域に、先頭のコードを移動しています。
ぴゅあさんがおっしゃるように、1トラック(18セクタ)ずつをバッファに読み込み、
CPUで順次、0x0100:0000以降に転送していくのが、単純かつ簡単そうなので、
試してみたいと思います。
トラ技増刊「パソコンのレガシィI/O活用大全」の一部(?)が
http://www.cqpub.co.jp/column/books/2001a/34331PC_Legacy/default.htm にありましたので、こちらも参照してみたいと思います。
528 :
ぴゅあ :2005/12/04(日) 21:07:54
>>527 > floppyの先頭512kは0x07c0:0000に読み込まれ、2個目以降のセクタは
> BIOS領域の後の0x0100:0000に読み込んでいます。しかし、54セクタ
> ・・・
なるほど。
この辺りは0x1000:0000から0x2000:0000にとかいう辺りで
「BIOS領域の後の0x0100:0000」が0x1000:0000と書き間違えたのかな?とか
私自身0x9f00:0000と0x09f0:0000を取り違えてしまってたりしましたが・・・。
頑張ってください。
> トラ技増刊「パソコンのレガシィI/O活用大全」の一部(?)が
確かに第1章そのものが書かれているみたいですね。
DMAについては2章, FDCについては5章になるんですが
第1章の全てはそのまま入っているんだろうと思います。
あさがおOSのイメージ作りたいんですけど ldの所でコケてしまいます… どうしたらいいでしょうか? msys + mingw + nasm
こんばんは。
>>515 OS開発の前に関係ありそうな仕様書を一通り集めて目を通しています。
DOSの開発にはオーバースペックだとおもいますが、
OADGのATハード仕様に書かれたことはだいたい理解しています。
IA32の仕様書やInterrupt Listもある程度は目を通しています。
こういう知識は直接DOSの開発に使うわけではありませんが、
ハードの振る舞いを知っているとBIOSの挙動も想像がつきますし、
デバッグなどで役に立ちます。
>>517-519 おっしゃる通り、ARPL命令のほうが効率は良さそうですね。
また、270-DOSの特殊な実装では、INT 30hを使うのも効率的だとおもいます。
割り込み処理の高速化はあとまわしにしていますが、
最後のチューニングではこれらを使うことを考えたほうが良さそうですね。
現状放置しているCPUキャッシュの制御のほうが実機では効果ありそうですが。。
>>527 ご参考までに、
9f00:0000にはBIOSのワークエリアがありますので、
270-DOS ではメモリのサイズをINT 12hで取得しています。
通常は 639K が返されます。
拡張メモリのサイズは
1. INT 15h AX=E820h
2. INT 15h AX=E801h/E881h
3. INT 15h AH=88h
の順で試し、最初に成功した戻り値で取得しています。
>531 > 9f00:0000にはBIOSのワークエリアがありますので、 ユーザ領域では? BIOSは 0000:0200-0000:05FFとA000:0000-F000:FFFF までの何処かを使っていると 認識してますが間違ってますか? >515 自分はアプリケーションプログラマなのであんまり知識はないです。 アセンブラでプログラムが組める程度の知識しかないので 必要なときに勉強してます。
>520 の内容で質問があります。 ブートストラップコードの開始位置が 07C0:0000 と0000:7C00 の2種類の記述を見かけます。 私は後者の 0000:7C00 でコーディングしていますが どちらも正解なのでしょうか? 実機とBochsでは起動できていますが・・・
最終的には同じアドレスだが 厳密には 07C0:0000 が正しい っつーか、0000:7C00 だと その後の処理で相対ジャンプその他 コーディングに不都合が生じるので 素直に 07C0:0000 使う方が無難
曖昧だから最初に FAR JUMP 使うんだよバーカ
536 :
ぴゅあ :2005/12/06(火) 21:17:25
>>533 どちらが正解でどちらが誤りとかいうのはないでしょう。
BIOSによってどちらで飛んでくるかはまちまち(好みの問題?)らしいです。
この場合、大抵$0000:7C00〜$0000:7DFFにあるコードの範囲で扱おうとしているでしょうし
$07C0:0000と$0000:7C00の違いを意識しないで書けるコードで書いているなら、(当然)気にしなくていいでしょうし、
意識が必要(そう)なら最初にどちらかに統一してしまえばいいでしょう。
敢えて言うまでもなく
$0000:7C00ではCSレジスタで物理アドレスの$00000〜$0FFFFにアクセスできることになりますし
$07C0:0000では同様に$07C00〜$17BFFになります。
CS,IPレジスタを再設定するとすれば、私の場合は気持ち的に$0000:7C00を優先したいと思ったりしますね。
尤もCSレジスタを使ってメモリアクセスをしたりしたいのでなければ
(BIOSのベクタテーブルを読み出したいとかで他のセグメントレジスタが開いてないとか)
特に気にすることもないんではなかろうかと思ったりです。
537 :
ぴゅあ :2005/12/06(火) 21:18:01
>>532 使っていないように見えたりするけど
私は一応$9FC00〜$9FFFFを予約域として捉えています。
BIOSによって違ったりもするかもとも思いますが
INT 15h, AX=E820hで報告されたりするでしょう。
ADVANCED CONFIGURATION AND POWER INTERFACE SPECIFICATION Revision 2.0c, August 25, 2003
「15.5 Example Address Map」
http://www.acpi.info/spec20c.htm 私としての気持ちとしてというようなものですけど
あまり意味がなかったりするとも思うけど、
$80000〜$9FFFFに直書きでコードを置くのは
避けるようにしていたりしています。
あとメモリ域の先頭部分については
私は$00000〜$003FFと$00400〜はその延長として$007FFは外しておこうと思っていたりします。
なんとなく$001000〜と$002000〜辺りは気になったりもするところですが。
私としての気持ちとしてのものばかりになってますけどね。
こんばんは。最近活発ですね。
>>532 DOS 実装時に調べたAT互換機のメモリレイアウトを書いておきます。
ACPIの仕様に従って INT 15h/AX=E820h で
取得するのが正しいです。
00000h-003FFh 割り込みベクタ
00400h-004FFh BIOS ワーク
00500h-005FFh 不明(未使用?)
00600h-9BFFFh 未使用
9FC00h-9FFFFh BIOSワーク(*)
A0000h-BFFFFh VGA
C0000h-EFFFFh レガシ拡張BIOS(VGA BIOSを含む)
F0000h-FFFFFh BIOS
100000h-xxxxxxh 未使用の拡張メモリ
xxxxxxh-xxxxxxh ACPI、SMP BIOS ワーク
(*)VGA RAM直前にあるBIOS予約領域は、
0400h:000Eh が指すセグメントと、
9FC0h:0000hに書かれたサイズで算出、
通常は9FC00h-9FFFFhです。
POSTのエラーコードやAPM、ACPI、PCI BIOSやマルチプロセッサなど
あたらしめのBIOSが必要とするデータは
いろいろなところに置かれているようです。
もし、プロテクトモード移行後に(VGA以外の)BIOSを、
APMやACPIも含めて全く使わないのでしたら、
潰してもかまいません。
539 :
532 :2005/12/06(火) 23:58:17
> BIOSは 0000:0200-0000:05FFと 割り込みベクターは 0000:03FF まででしたね >537-538 まだ、ACPI関連は調べていなかったので助かります m(__|__)m
540 :
533 :2005/12/07(水) 00:43:30
>534-536 0000:7C00 を想定する場合は org 07C00h でコーディングする為に CS:IP が 0000:7C00 や 07C0:0000 でも問題が無いが 転送先は xxxx:7C00 に固定されるが 07C0:0000 を想定する場合は org 0h でコーディングする為に CS:IP が 0000:7C00 や 07C0:0000 でも問題が無く 転送先が xxxx:0000 にできてメモリーの利用形態の自由度が上がる。 かつ、offset アドレスの扱い方しだいって事ですね あってるかな(^^;) 個人的には 0000:7C00 が好きですが・・・
541 :
ぴゅあ :2005/12/07(水) 22:41:22
>540 微妙かも・・・。 微妙かもっていうのは、その結果出てくるバイナリの形は違っていたりするだろうってところで 要はCS:IPがどちらでも目的の場所に飛んできたときにちゃんと実行できればそれでいいわけです。 私の場合にどっちが好みか?というところで「再設定するとすれば$0000:7C00」を採っていますが この話の場合では、高々512バイトで(他、条件を踏まえて)CSレジスタの値を気にするようなコードを書くほどのこともないので コードを書くときの表現のし易さ, リンク後の吐き出されたバイナリの扱い易さとかを踏まえて 実際のコードは$07C0:0000であるものと"仮定"して書いています。 (もしCS:IPが$0000:7C00だったとしても問題がないコードを書いているという前提があるので) どちらでも問題ないと判って書いていれば、どちらでも好みで選べばいいと思いますよ。
542 :
540 :2005/12/07(水) 23:24:54
ぴゅあさん有難う御座います。 org の意味が今頃になって詳細に理解できました OTZ. >540 の解釈は間違いです(ーー;)
またMEG-OS復活?
545 :
Be名無しさん :2005/12/11(日) 21:29:14
実際のメモリの保護はオペレーティングシステムではなくハードウェアで行われる理由ってわかる人います?
546 :
ぴゅあ :2005/12/11(日) 22:20:36
>>545 どういう保護のことを言っているのか判りませんけど、
それはハードを設計した人の方針によりで
設計者の説明があれば明確になることでしょうけど
そこまでは判りません。
私が考える(推測する)ところでは
「ソフト的に対応することでハード的コストを削減する(ソフト化への移行を推進しよう)」
という考えがある時期から急激に増えてきた反面、
「ソフト的に処理するよりハード的に処理させた方が性能や保護の面で信頼性の向上が期待できる」
といったような考えもあったりするからではないでしょうか。
ソフト的な処理では他のプログラムにより故意に書き換えられる可能性は高くなる
(ウィルスソフトによって書き換えられてしまったとかいうのもそのひとつと言えるのでしょう)
ということも考えられるのでしょうし、
いくらCPUの処理速度が上げられたと言っても
ソフト的に処理するよりはハード的に処理された方が速いでしょう。
その上で
> オペレーティングシステムではなくハードウェアで行われる
というところは
OSを設計する人がOS内でやろうと決めればOS内で実装されたりするのだろうし、
ハードの持っている機能を活用しようと考えればハードで行われるのでしょう。
なので、傾向としてはあるかも知れませんが、(絶対的な)決まりではないと思いますよ。
もし考えついた実装がハードに実装された機能を利用して実装できない
或いは機能不足とかいうことになればOS内で実現されることになるでしょうし、
その後、その実装がハードに採用されることがあったりすれば
ハードで行われることにもなったりするのでしょう。
547 :
Be名無しさん :2005/12/11(日) 22:35:45
>>546 わざわざありがとうございます。いきなりこんな問題出されたんで、めっちゃ困ってたんです。
ハードによるメモリ保護ってパリティとかコンデンサの
549 :
ぴゅあ :2005/12/12(月) 08:09:13
>>547 問題?
授業の課題とかだったりするなら、そのまま答えにしてもいかんと思うよ?
どんな答えを出させようとしているのか、ちゃんと問題文を考えてでないと。。。
552 :
438 :2005/12/18(日) 16:33:43
SYSコマンドの実装を進めています。 フォーマット済みFDDへは インストールできるようになりましたが、 HDD対応にはまだMBRとPBRの実装が必要です。 他の和製OSはどうやってHDDブーとしているのでしょう? フルスクラッチでしょうか?liloやgrub?
MBRまで作る必要あるの? ほとんどの和製OSはHDDブートまでできなかった希ガス
ブートセレクトでもしない限りは普通に入ってるであろうMBRで十分 まっさらなら一度DOSでもいれるかFDISK /MBR パーテーションに入っちゃえばあとはFDと同じ ファイルシステムがFDで使えるFAT12止まりってところが多いぽ?
デバックはまだしていないけど 私はMBRまで作ってます。
ブートストラップコードがFDD依存になっていなければ
FDD用のブートストラップコードで15MByteまでのHDDから
起動できますね。
HDD起動を視野に入れるとFDISK/FORMAT/SYSコマンドの実装がめんどいので
後回しにしてますが・・・
>>553 私は独自のローダ経由で起動するように作っています。
WINDOWS EXEならこれで動くんですが void main(){ int i; char *str = "abcdefghijklmnopqrstuvwxyz"; for (i = 0; str[i] != '\0'; i++) { printf("a"); } //for(;;); } KERNELでこう書くと表示されません void start(){ int i; char *str = "abcdefghijklmnopqrstuvwxyz"; for (i = 0; str[i] != '\0'; i++) { ((char*)0xB8000)[i * 2] = str[i]; ((char*)0xB8000)[100 + i * 2] = 'B'; } for(;;); } 何故なんでしょう…
>>557 そのkernelが何者か書かないと、誰も答えられないような気がしますが。
リアルモードなら、far pointerといういにしえの技術があるので、
それを学んでください。
559 :
557 :2005/12/28(水) 19:59:30
>>557 100+が何のつもりで書いているのかがわからない
561 :
ぴゅあ :2005/12/28(水) 21:31:11
>>557 試してないですけど(VIDEO BIOSによっても違うだろうし)
ビデオモードとかは問題ないのだろうとして(VRAMアドレスとか)
アトリビュートは問題ないのかなぁ?
と思ったりですけど
(WINDOWS EXEなら…との比較はあまり意味も無さそうな??)
562 :
557 :2005/12/28(水) 22:51:15
>>560 100+は位置調整の為ですforループが動いてるのか調べたいので
アトリビュートですか。VRAMの奇数に入れる奴ですね。平気だと思います
Windows上と比較したのは
windowだとprintf部分が実行さえれて表示される
bochsとかだとforの条件が一致しないでprintfが無視される&一致してもstr[i]が表示されない
ので困ってます
仕組み的にはmonaとかと同じコードのはずなんですが…
>char *str = "abcdefghijklmnopqrstuvwxyz"; このliteralなstringへのpointerが正しく指していない予感。 PEなりELFなり、正しくrelocateしないと見当違いな場所を読みに行ってしまうよ。
564 :
ぴゅあ :2005/12/28(水) 23:08:30
>>557 100+の方はやりたそうなことは読み取ってたから気にしてはないですが
"VRAM BIOSにより"だと思うけど画面クリアのときに
アトリビュートを0x00にしているものもあるだろうと思いますよ。
だとすればフォアグランドは黒なので何も見えなくて合っていることになるでしょう。
> 仕組み的にはmonaとかと同じコードのはずなんですが…
はmonaのコードとか見てないので判らないですが
「平気だと思います」ではなんにもならんでしょう。
まずそこを「平気でした」にするべきと思います。
それでもダメならじゃあなんだろう?と進むんだと思いますよ。
それを試してみることは大して手間の掛かるものでもないだろうと思いますしね。
565 :
ぴゅあ :2005/12/28(水) 23:13:58
>>563 > このliteralなstringへのpointerが正しく指していない予感。
仮にそうであってもゴミが見えたりしてもいいかも。
そこがたまたま非表示な文字だったら…ではあったりするけど
その辺りは
> ((char*)0xB8000)[100 + i * 2] = 'B';
がフォローしそうだけど、どうなんでしょう。
566 :
ぴゅあ :2005/12/28(水) 23:15:12
あ・・・ そっか 1バイト目が0x00だったら。。。
ヒント:セレクタ
568 :
ぴゅあ :2005/12/29(木) 00:52:04
Bochsなのかぁ…と動かしてみようかと思ったけど
動かすまでに手間が掛かりそうなのでパス。
イメージがついてたので実機でブートしようと思ったけどダメでした。
そういうもの?(ブートコードは未チェック)
>>567 の言うセレクタがヒントになるのかどうかは判らないですけど
0x400バイトから始まるコードを見てみると
char *str = "abcdefghijklmnopqrstuvwxyz";は
0x402000〜に配置されるようになっているような?
あと100+ということでしたがkernel.cでは
+1994〜と+2000〜になってますよね。
Bochsで80x25でこの位置に書けば出て来るんだとすれば
少なくとも+1994〜は見えている?
それ以降の部分は
>>563 さんの辺りなのかも。
569 :
557 :2005/12/29(木) 01:13:52
>>564-566 >>568 さん
アトリビュートの意味を完全にはき違ってました、すいません。
>まずそこを「平気でした」にするべきと思います
平気でしたとしたくて色々やってるのですがうまくいかず…勉強不足です
>>568 イメージはちゃんと動くはずなんですが。。
ちなみにイメージはNTRawriteなどで書き込まないと実機で起動できないです
というか実機で動かすのは何がおこるのかわかりません
>少なくとも+1994〜は見えている?
forで括ってある所以外は書き込めてます。
どうも配列でこけてる気がします…
>>563 さんがおっしゃってる通りっぽいですね。
リロケートについて調べ中です。。
リンカでベースアドレスが指定されてないのに動くわけがないじゃん
571 :
557 :2005/12/29(木) 17:50:42
572 :
Be名無しさん :2005/12/29(木) 19:26:39
>>571 そうそこ。
>>570 が言ってるとこ設定できたりしないのかなとか
時間がなかったので帰ってきたら書いてみようかと思ってました。
あとコンパイラとかって何使ってるのか確認しようとか。
無事、解決されたみたいですね。
> イメージはちゃんと動くはずなんですが。。
もう一度確認してみようと思ってますが、
昨日動かしてみた時点ではipl.asmのline78でCF=1になってて
延々ループしてしまう羽目になってるようでした。
(暫く使ってなかったから壊れてるかな。。。)
因みに
> 平気でしたとしたくて
は
> forで括ってある所以外は書き込めてます。
で「平気でした」ってことになりますよ。
573 :
ぴゅあ :2005/12/29(木) 19:42:30
>>571 実機でループ(CF=1)になるというところは
ipl.asmのline74で"mov cl,2"としてあるのに
line72で"mov al,18"にしてあるので(ずっと前にこの辺りの話があったりしましたが)
ここを"mov al,17"としました(kernel.imgの0xBFバイト目を0x12→0x11に書き替え)
ちゃんと出てますね。
少なくとも試したマシンではちゃんとアトリビュートも初期化されているらしくて
表示されました。
574 :
557 :2005/12/30(金) 20:54:12
>>572-573 さん
コンパイラというか開発環境はwinxp上でmsys + nasm + mingwです。
指摘されてるように書き換え実機での起動確認しました。ありがとうございます。
割り込みはうまくいったのでそろそろコード解析して書き直したいと思います。
Higeposって表示されるままじゃmonaの皆様に失礼ですので。。
575 :
ぴゅあ :2005/12/30(金) 21:49:34
>>572 の名前は消えてたみたいで。。。
名前入ってないと、あんななるんですね
今頃知りました。。。
576 :
Be名無しさん :2005/12/31(土) 15:32:45
D言語が実装されたら俺もOS作ろうと思ってる。
DでOSいいですね
おけおめ 今年も良いOSが実りますように…
去年は実ったの?
自分的には実ったよ。 熟してないけど・・・。
582 :
OS勉強中 :2006/01/02(月) 12:21:14
現在、x86の環境でTSSを使ったタスクスイッチの実験をしています。 (proc_switch内では、selector:0 へ ljmp) void task1(void) { int i = 0; for (i = 0; i < 1000; i++) { _sys_printf("task1 %d\n", i); proc_switch(0x28); // task2のセレクタは0x28 } } void task2(void) { int i = 0; for (i = 0; i < 1000; i++) { _sys_printf("task2 %d\n", i); proc_switch(0x20); // task1のセレクタは0x20 } } (続く...)
583 :
OS& ◆WRre/7Sh7Q :2006/01/02(月) 12:21:49
(続き) 上の実験はうまくいってるのですが、timer割り込みハンドラ内でタスクスイッチをする場合、 proc_switch内でljmpしてしまうため、asm("iret")などの割り込みから戻る処理 を通っていません(気がします)。 void timerHandler(void) { // EOI outp(0xa0, 0x20); outp(0x20, 0x20); proc_switch(0x28); // 現在0x20, 0x28のタスクへスイッチ asm("mov %ebp, %esp"); asm("pop %ebp"); asm("iret"); } このような場合、どのようにしたらよろしいでしょうか? また、普通はこうは書かないなど、アドバイスがありましたらお願いします。 (現在は、TSS1個を共有する(linuxなどの)方法に行く前に、複数TSSを使うタスクスイッチを 実験しております。)
タスク切り替え前にちゃんとEOIを発行してれば問題ない
585 :
OS& ◆WRre/7Sh7Q :2006/01/02(月) 15:04:13
>>584 ご回答ありがとうございます。
スタックポインタの復帰やiret等はどっかのタイミングで自動的にされているということでしょうか?
timerHandlerが呼ばれたら、すぐにproc_switch(0x28)を実行してるのに、task1のループが全部終わってから出ないとタスクスイッチが起きません。
どなたかおわかりになる方、ご教授ください。
また、この辺のことが詳しく書いてあるWebページなどがありましたら教えてください。
586 :
ぴゅあ :2006/01/02(月) 18:08:28
task1(), task2()がどう起動されているのかとか、proc_switch()がどんな実装なのかは判らないですけど、 それらはうまく行っているということなのでコードから推測されるやろうとしているだろうところは 満足しているんでしょう。 timerHandler()についてどういう呼ばれ方をするかによって動きは変わるのだろうと思いますが (参考: IA-32インテルアーキテクチャソフトウェアデベロッパーズマニュアル 下巻とか) いくつか疑問もあったりするところですけど… それはややこしそうでもあるので割愛させて頂いて。 ひとつ、 目的として、単に「IRETを通過させたい」んだということにすると IRETで呼び出し元に戻るようにしているところを proc_switch(0x28);を含むルーチンへIRETでジャンプするという形にするという手があるでしょう。 IRETを使ったジャンプとかいうのは別に珍しいものではなく古くからある手法です。 ただ、timerHandler()がどういう呼ばれ方をしているのか(IRETはどう動くのか)とか、 割り込み許可/禁止状態, その他EFLAGS等の扱いもちゃんと考える必要があるでしょう。 またタイマ割り込みとスイッチは分けて考えるのがいいような気もしたりです。 そうすると期待している形かどうかは判らないですけど、今やりたいだろうことはそんなに難しいことではないのかも知れません。 ただ、これから先の目的は違うと思うので、 task1(), task2()が主役でタイマ割り込みはその動きに影響を与える(脇役)という見方(なのだろうか?)ではなくて、 task1(), task2()を起動しているメインでタイマ割り込みを処理してtask1(), task2()はその上で動くものとした方が良いような気もしたりです。 尤もそれは昔からやられているようなものになってしまうでしょうけど。。。 > timerHandlerが呼ばれたら、すぐにproc_switch(0x28)を実行してるのに… タイマ割り込みが起こっていることは確認されているのだろうと思いますけど、timerHandler()内でproc_switch()が正しく動作できる状態にあるのかとか?
>>583 スタックの復帰やiretは不要です。
タスクスイッチのやっていることを理解していないのであれば、
エミュレータ組み込みのデバッガ等で挙動を確かめましょう。
理解せず使うと、いずれ謎の#GPに悩まされます。
588 :
OS& ◆WRre/7Sh7Q :2006/01/03(火) 13:57:22
>ぴゅあさん
>>583 ご回答ありがとうございます。
では、割り込み時にスタックに積まれるEFLAGS,CS,EIPレジスタはタスクスイッチ時に
popされているという認識でよろしいでしょうか?
(timer割り込みが入って、タスクスイッチの前に、またtimer割り込みが入った場合に、
どういう挙動をするかがわかりません。。)
タスクスイッチ等をもう一度勉強し直します。
また、この辺の挙動について詳しく書いてある書籍、ページ等がありましたら、
教えていただけると助かります。
589 :
ぴゅあ :2006/01/03(火) 17:00:40
> 割り込み時にスタックに積まれるEFLAGS,CS,EIPレジスタはタスクスイッチ時に
> popされているという認識でよろしいでしょうか?
私は違うと思います。POPされるとか、しなくていいとかいう認識の仕方?として。
>>586 にもレスしたように、
やろうとしているのがタスクスイッチであるのは間違いないと思いますが、
task1(), task2(), proc_switch()らがどのように扱われているかによって変わってくるだろうと思います。
参考となるだろうと思われるのは、IA-32インテルアーキテクチャソフトウェアデベロッパーズマニュアル
[Intelサイト(
http://www.intel.co.jp ) → サイトマップ→ハードウェア開発者向けサイト ホームページ → 日本語技術資料 (マニュアル/アプリケーション・ノート/データ・シート 他)]
が最短ルートだろうか?
上巻: 第6章 プロシージャ・コール、割り込み、例外
中巻: 第3章/ 3.2. 命令リファレンス(RET, IRETとか)
下巻: 第6章 タスク管理
(最新を見ているのではないので章とかずれているかも?)
或いは
> (timer割り込みが入って…
の点では「下巻: 第5章 割り込みと例外の処理」もかも。
書籍では「はじめての486」とかに書かれていそうですが、書かれている中身自身を見るのとは別の目的でチラッと見ただけなので、恐らく書かれているだろうくらいしか判りませんけど。
IRETがリターンとして動くかタスクスイッチとして動くかはその呼び出し方によって変わると考えています。
それはまたtask1(), task2()についても言えるのだと考えていますが。
「考えています」とは自分自身がまだ実際に確認していないからですが、昨年、仕事で商用OSを解析していたときにそういった部分のコードを実際に目にして、なるほどなぁと理解しています。
その辺は先の辺りを熟読すれば解ってくるのだろうと思います。
恐らく、proc_switch()とIRET, 及びタスク(下巻: 第6章 タスク管理)の関係を見ることになるんでしょう。
単純に割り込み処理とタスク管理(TSS)をごっちゃにして扱ってしまうといけないんでしょう。
590 :
ぴゅあ :2006/01/03(火) 17:04:39
長くなってしまって申し訳ないけど分けて書きます。
>>586 に書いた
> IRETを使ったジャンプとかいうのは別に珍しいものではなく古くからある手法です。
(RETをJMPに摩り替えると説明した方がいいのか?)
の「古くからある手法」というのはちょっと自信がなくなりました。
かつてZ80を使い始めていた頃に割り込みから早く抜け出したいというところで考えついたもので、書かれた書籍があるか?と問われると判らないです。
「古くから…」というのは自分の中でだけだったかも知れない・・・とか思ったり。
が、他にもやっていた人は居るんだろうし、「考えついた」とか言えば「そんなの昔からあるよ」とかツッコミが入ると思うので、「古くからある」としても間違いではないだろうと思います。
また、これを実際に使われているものとして先の商用OSの中(最近という意味で)でも見ていますし、珍しいものではないと思います。
> タスクスイッチ等をもう一度勉強し直します。
実際のコードとしてはずっと昔にOS-9のコードで最初に見たのだろうと思います。
書籍でも色々見たことを覚えていますが、それは今は持ってないので挙げられないです。また、もう手に入らないのだろうと思います。(同じ物は)
例えばGoogleとかでキー「マルチタスク」とかで検索すると色々と手法とか書かれているサイトや書籍の情報が出てくると思います。
探せというだけではつまらないので例を挙げてみると
CQ出版社「リアルタイム/マルチタスクシステムの徹底研究」
http://www.cqpub.co.jp/hanbai/books/33/33261.htm そのまま使えるサンプルコードは載ってなかったりするだろうと思いますが、かなり参考になるのではないだろうか?という予感がしています。
(サイトの例は面倒なので割愛。探してみてください。)
monaスレの人は何処行っちゃったの??
シベリアなんかに作っても誰も寄ってコネェーな
荒らしに合わせて良スレを潰すとは愚かな奴等め
596 :
OS& ◆WRre/7Sh7Q :2006/01/03(火) 20:55:01
>ぴゅあさん 抽象的な質問に対して、親切に回答して頂きありがとうございます。 現在、task1, task2, idle_task の3つのタスクをつくり、task1,2のループ処理 が完了したらidle_taskで無限ループということが実現できました。 (タイマ割り込みの度にタスクスイッチ) void timerHandler(void) { // EOI(コード割愛) // タスクスイッチ // 現在task1 => task2、task2 => task1, task1,task2終了=> idle_task // 呼ばれない処理達 asm("mov %ebp, %esp"); asm("pop %ebp"); asm("iret"); } 実際、ぴゅあさんからもご紹介があった、「はじめて読む486」を見て、 タスクスイッチ部は作りました。動いているはいるものの、内部でどういうこと が行われているかを完全に理解していないので、 「IA-32インテルアーキテクチャソフトウェアデベロッパーズマニュアル 」を見て、 理解しようと思います。 「CQ出版社「リアルタイム/マルチタスクシステムの徹底研究」は持っていますが、 スケジューリングアルゴリズム等について詳しく書いていますが、実際にマルチタスクを どうやって実現するかについては、殆ど書いていなかったと思います。
597 :
OS勉強中 :2006/01/04(水) 15:32:11
割り込みハンドラの実行中に、EOIを発行後、同一IRQの割り込みが発生する場合 ってありますでしょうか? 具体的には、タイマ割り込みハンドラ内の先頭でEOIを発行した直後、 そのハンドラ内での処理が完了する前に、もう一回タイマ割り込みが発生し、 2回目のタイマ割り込みハンドラの処理が先に終了する という現象は起こりえますでしょうか?
>>597 EOIとはPIC->CPUの割り込みを有効にするもの
HW->PICとかCPUの最終割り込みはそれぞれ別に制御する
なのでCPUに割り込みを生成させたくなければ
どれかとめておく
599 :
ぴゅあ :2006/01/04(水) 21:54:23
>>597 起こり得るでしょう。
そのためにEFLAGSにIFがあり、STI,CLI命令があるでしょう。
例えタイマ割り込みの間隔がタイマ割り込み処理の処理時間より長くても起こり得ます。
ただ、タイマ割り込み発生時にはIF=0でしょうからSTI命令を実行しない限りは受け付けられないと思いますけど。
あまり覚えてないので正確ではないですが、
IF=0の状態ではその間に起こった割り込みは保留にされます。(IF=1になるまで待たされる)
それが「タイマ割り込みの間隔が長くても」というところに関わってきたりします。
またEOIは保留にされていた同レベルの割り込みに対して、次を送ってもいいよと伝えることになるんだろうと思うので、タイマ割り込み処理の早いうちにEOIを送って、かつ、IF=1にしてあったら
後続のタイマ割り込みが先に処理を終えるということも起こり得るだろうと思います。
600 :
ぴゅあ :2006/01/04(水) 22:01:13
>OS&さん > idle_taskで無限ループということが実現できました。(タイマ割り込みの度にタスクスイッチ) 万事解決? > 「はじめて読む486」を見て、タスクスイッチ部は作りました。 言われてみれば、書かれていたのをチラッと見たような気がしたりです。 > スケジューリングアルゴリズム等について詳しく書いていますが、実際にマルチタスクを > どうやって実現するかについては、殆ど書いていなかったと思います。 そうなのかぁ。。。 と思って、本屋さんに行けたときに見てみようと思ってましたが(夕方にでも) ウィルスだ〜という騒ぎで車で連行されて。。。(結局なんともなかったけど) 行く時間もなくなってしまったので、また行けたときに見てみます。 この辺り、見て来れてからと思っていたのですけど、取り急ぎレスだけ。 あと、ちょっと気になったというか・・・ 「IA-32デベロッパーズマニュアル」を見ていけば解るのだろうとも思うのですけど、タスクスイッチの処理はpop %ebpとiretの間にあるのがよさそうに思えたりです。 あと、タイマ割り込み処理の呼び出しがどのようにしてあるかによるのだと思いますけど、ゲートを介していた場合IRET命令の次ってproc_switch()の先頭へジャンプする必要があったようにも思います。 proc_switch()の中身全体をfor ( ; ; ) { }で囲ったのでもいいんだろうか と思ったりですけどね。 proc_switch()の中身にもより…だと思うので、もう一度「はじめて読む486」(?)を見てからと思っていたりですけど。 ちょっと書籍を見てみて思うところがあったりしたら、また改めて。
早い段階でPICにEOIを送ると割り込みが許可されて二重に割り込みが発生する危険性がある 割り込み処理が終わるまでEOIを保留にすると他の割り込みをPICが受け取れない なので 高度なOSはIMRをマスクして処理中の割り込みを禁止した後EOIを送ってPICを開放する
603 :
ぴゅあ :2006/01/05(木) 21:30:37
>OS&さん
私が
>>589 で想定して書いた書籍「はじめての486」(?)は似てるけど別物だったような気がしたりです。
で、その後「はじめて読む486」の方もチラッと見てたのが判りました。
…なんてのは別にどうでもいいですね。(^^;
CQ出版社「リアルタイム/マルチタスクシステムの徹底研究」(No.15)もなんとか見つけました。
私だと5秒で棚に戻してますね。。。
やっぱ自分の目で見てからでないと良さそうかも?とかでも言い難いですね。
解っているつもりの人か、十分やって解った人に向いた本なのか。。。そういった人たち向け?だったりするのかも?
尤も十分解ってきてるなら読まなくても足りてるような気もしないでもないですが。
想像力(創造力?)豊かに…とか言えるかと思ったけど、この本では今求めてそうなところは無理でしょうねぇ。。。
もうちょっと良さそうなのはないのかと、少ない書籍を見回しましたが、
辛うじて同シリーズのNo.17「リアルタイムOSと組み込み技術の基礎」というのを見つけました。
同じ読むならこちらの方が断然良いですね。
ただ…かなり物足りない(想像力(創造力?)豊かにするにも)というところで微妙というか
私としてのお勧めには程遠いですね。
でも知識を増やすために読んでみておくのは結構いいんだろうと思います。
なんかもうあまり内容覚えてないけど。。。(汗)
あと1冊、私としては面白そうな本もあったのですが、今OS&さんがやられている形態とはかなり違うものと思ったので取り敢えず置いておきましたけど。
ずっとどうしようかと思ってたけど、あれば気晴らし?にも読むだろうし、どんな風にしてるのかも何となく判るかな?と、折角なので「はじめて読む486」を買ってみました。
詳しいところとかは兎も角も、ヒントくらいは出せたりすることもあるんではないかと。
604 :
OS勉強中 :2006/01/06(金) 00:22:07
>ぴゅあさん いろいろとご回答、調査ありがとうございます。とても参考にさせて頂いて おります。 > 「IA-32デベロッパーズマニュアル」を見ていけば解るのだろうとも思うのですけど、タスクスイッチの処理はpop %ebpとiretの間にあるのがよさそうに思えたりです。 これは、割り込み前のスタック((cs, eip, eflagsが詰まれる前)の状態にするという ことですよね? これをしないと割り込みが入るたびにスタックが詰まれていってしまい そうですね。 ちょっと話がそれるかもですが、 複数のTSSを使ったタスクスイッチの場合は、tssのセレクタにfar jumpするので、 割り込みハンドラに戻らないと思いますが、 linux等のTSS1個を共有する場合では、タスクスイッチコードの後に割り込みハンドラに戻って 来るので、iret等がきちんと実行されると僕は理解しています。 (タイマ割り込みハンドラ内で、タスクスイッチをしていることを想定しています。 実際にlinuxではしてないかもですが。。) この理解は正しいでしょうか?(まだTSS共有版を実装してないので、予想と他の人のコードを見た感じで話していてすいません。。) 「リアルタイムOSと組み込み技術の基礎」は参考までにとりあえず、立ち読みしてみます。
605 :
OS勉強中& ◆9PKzhVYiO2 :2006/01/06(金) 00:25:01
>>602 > 高度なOSはIMRをマスクして処理中の割り込みを禁止した後EOIを送ってPICを開放する
なるほどです。参考になります。ご回答ありがとうございます。
606 :
Be名無しさん :2006/01/06(金) 21:35:11
俺の今は使ってない自作PCのスペックを教える。 CPU:Pen600くらい Mem:多分256だったと思う OS:Win98SE そんな俺のPCを再利用するためにOSを作ってくれ。 インターネットとメールができればいいです。
>>606 そうおもうなら自作してくれ
ここはそういう人のためのスレだ
608 :
Be名無しさん :2006/01/06(金) 23:01:07
OSはいいよOSは。ただドライバを作るのがめんどくさい。
609 :
Be名無しさん :2006/01/08(日) 10:49:34
どんなOSつくってもいまのPCじゃろくな物にならん。
>>609 じゃああなたは今何を使って書き込んでますか
もしかしてBIOS?
611 :
Be名無しさん :2006/01/09(月) 19:42:12
MPUはOS用にアプリ用とは別に備えるべきだな。 マルチタスクなどという「ハード資源の有効活用」的な考えはもう古い。 ひとつの高性能なMPUにOSからアプリまで無理やり走らせ、結局は 重いOSにすべて引きずられてしまうあほらしさ。 ひとつのアプリにひとつずつMPUを割り当ててしまえ。
613 :
Be名無しさん :2006/01/11(水) 20:42:23
ハードディスクも無くしちゃえ。 プログラムはフラッシュメモリにいれ、それをわざわざRAMにロードせず 直接走らせる。当然ハーバードアーキテクチャを採用し、フラッシュメモリ はリードオンリー。
何度も議論されてることだが、特許対象はLFN。 8.3ファイル名でFATを使う限りは問題なし。
NTFSってボリュームの結合できないよね。
cnetって誤報だらけの・・・なんでもない
>>618 あー、ミスリードじゃなくて天然なのね....
わざとだろ
なかなか進みが無いのでROMを解除して質問させて頂きます 皆さんは情報をどこから仕入れているのでしょうか (探してもなかなか詳しいのは出て来ないのです)
っgoogle
ソースを読むとか
624 :
621 :2006/02/05(日) 12:16:52
>>622 調べてみました
ただもう少し踏み込んだのがなかなか見つからないのです
>>623 著作権とかライセンスとかは大丈夫なのでしょうか
625 :
ぴゅあ :2006/02/05(日) 17:02:04
>>624 探す・調べるだけでは求めるものまでには到達しなかったりするでしょう。
断片的にも集まった情報らから組み立てる。
実際にそうであるか、やって確かめる。
手に入れた情報が100%合っているとは限らない(提示する際のミスとか含めて)ですし。
>著作権とかライセンスとかは大丈夫なのでしょうか
どんなことに対してどう関わってくるのか。
ソースを読むことだけで著作権とかライセンスとかが絡んでくるのだとすると
読める形でソースを見せていることからして問題にならないんだろうか?
と思ったりもしますけどね。
626 :
ぴゅあ :2006/02/05(日) 17:08:09
書き忘れ・・・
>ただもう少し踏み込んだのがなかなか見つからないのです
もう少し踏み込んだものというのがどういうものかにもより…だったりもするでしょう。
見逃しているか、探しようが足りないのか、的を外しているか
或いは容易には手に入らないものなのか。
>>625 にダブるけど、足りないものを自分で補ってみたりしているか(想像・推測してみたりして)
とか
>>624 踏み込んだモノといっても、具体的にどんなものを求めてるの?
チップの制御法ならデータシート見ればいいし、
そういうのはメーカーサイトにPDFでおいてあることが多い。
手取り足取り初心者に教えてくれるような文章って意味なら、
そりゃ皆無に等しいと思う。書籍でなら多少はあるかな?
628 :
Be名無しさん :2006/02/06(月) 12:17:07
今有るものを上手に使いこなした方が面白いと思うけどなぁ。
例えばMacOSXを参考にしてみるのもいいんじゃないかと。
・OSXの基本的な部分。
Machカーネル+FreeBSDユーザーランド。ネットワーク機能はオープンソースアプリで。(Apacheなど)
描画システムにOpenGL、PDF+独自開発部分。データベースにSQLite+独自のフロントエンド。
こういった組み合わせを参考にして出来ないかな。
カーネルは独自開発、ネットワーク機能はBSDを利用しオープンソースアプリを利用みたいに。
・アクロバットでなくてもPDFができるのはなぜ?
http://www.antenna.co.jp/PDF/reference/PDFReference.htm 例えば、PDFを用いたOSXの描画システム↓
などは、PDFの利点を最大限活かした仕様になっている。同じようなものを作るのは不可能じゃない?
低レベルの部分をOpenGLに任せれば、GPU利用も苦にならない。
http://ja.wikipedia.org/wiki/Quartz サラウンドライブラリならOpenAL、他にもOpenMLみたいな最新の技術とか色々選択肢があるよね。
どんな分野にもオープンソースモノ、標準規格、仕様公開モノが存在していて、どれも日々進化していく。
そういうものを最大限生かすことが出来て、しかもオリジナルな部分の開発に集中出来るという利点がある。
Monaの公式行くと、こんな風に書いてある。↓
>Monaはなるべく過去の負の遺産を引き継がないように努めています。
どうせなら、過去の負の遺産が無いので、最新技術をコアから贅沢に使ったOSを目指す。
とか言って欲しいと思った。
まあ、素人考えだからこんなことが言えるのだろうけどね。<俺がね。
>>628 既製品流用って結構面倒よ。
I/Fがきちんと定義されてればなんとかなることもあるけど。
Monaは過去の負の遺産がない代わりに未来に借金残してる気もするが、
楽しんでるようだからいいんじゃまいか。
太郎にとってMona自体負の遺産だけどな
不良債権は清算しないと損害が拡大する一方
>>629 まあ世の中POSIXでつから、そこから大きく外れなければ
なんとかなるんでないかい。
uIPのAPIをC#風にラップなんて腹壊しそうな食い合わせより正しい方向だろう。
POSIX == 負の遺産 == 不良債権
>>633 strcpyをわざわざString::Copyとかにする方が不良債権化するだろ
んなこと言ってたら何もできんジャマイカ
他にはないような独自の機能を作れば独自のAPIも光る。 車輪の再発明と違ってデファクトスタンダードだって狙える。
>>636 どんな斬新なソフトもPOSIXの上に組まなければデファクトなんて無理
非POSIXなWindowsがデファクトですが何か?
デファクト目指してOS自作するなんて正気の沙汰ではないな。 趣味なんだからどうでもいいだろ。
【Mona脳】 Mona == 構造改革OS POSIX == 負の遺産 == 不良債権 Windowsがデファクト 趣味なんだからどうでもいいだろ
forkの使えるWindowsがほしい
645 :
Be名無しさん :2006/02/10(金) 01:15:44
>>644 windowsタン殺す気か・・?
CreateRemoteThread()とかcygwinとかmigw(できるか?)とか?
てか自スレで完結してろっすよ・・!! (=゚Д゚=)
646 :
Be名無しさん :2006/02/10(金) 06:55:09
てか今進捗どのくらいか教えて
>>647 まじめに勉強するつもりならTanenbaum本か悪魔本を読んだ方がいいと思う。
なんとなく詰め込みすぎな気がする。でもって肝心な部分が落ちてたりとか。
まあ現物を見ないとなんともいえんが。
悪魔本って何ですか?
BSDの悪魔本じゃね。赤と黒。 Operating System Conceptsってどんな感じの奴?
653 :
649 :2006/03/02(木) 17:25:19
読まないで批判するなとか言われたので立ち読みしてきた。
結論は変わらず。
ファイルシステムの話が無いに等しいのはPC用OSの解説としては話にならんと思う。
なんか32bitでマルチタスク+GUIを実現するのに直接関係ない部分が放置されている印象が。
まあOSの定義が違うといえばそれまでですが。
>>652 さいです。
赤の和訳はやめとけと言ってみるテスト。
654 :
Be名無しさん :2006/03/02(木) 18:53:35
EXE動くOSって別に作って良いの?
>>653 初心者向けの入門書として考えると良書だと思うけどなぁ。
デバッグの仕方も書いてあるあたりも好感を持てる。
OS本というと、Minix本が必ず賞賛されるのだが、
記述の古さが目立つように思う。
次のステップの本として、
組込みOS構築技法、詳解Linuxカーネルあたりをお勧めしたい感じ。
>>654 Windowsで動くファイルを動かせるOSを作って大丈夫かって事か?
訴えられたりするんじゃないか?分からんけど
>>657 EXE、つまりPE形式のことだろうが、例えPE形式を扱うにしろ、
Windowsで動くプログラムを直接そのOSでは動かせない。
何故かというと、システムコールだって違うし、OSの仕組みが違うから。
単純に実行ファイルの格納形式が同じであって、
現実は全く関係が無い。
ただし、Windows用のコンパイラをそちら用に使うことに関してはよく分からん。
>>658 >ただし、Windows用のコンパイラをそちら用に使うことに関してはよく分からん。
CooSの高橋氏がその辺調べて無問題と判明した筈
>>657 あぁ但し本当にWindowsで動くプログラムを動かせるOSに関しては、グレーゾーン。
ReactOSがWindows互換OSを作っている。
何か最近開発停止していたみたいだが。
ただこの停止は、Windowsのソースコード流出に関して、
そのコードが使用されているかの検証らしいから、別問題ではあるが。
661 :
649 :2006/03/03(金) 16:50:44
>>656 出来上がる物があまり"普通"じゃないのが気になるもので。
そのへんを理解していれば別にいいと思いまふが。
>>660 クリーンルーム手法で開発すれば問題ないんでは。
Reactはその前提が件のトラブルで崩れてしまったと。
663 :
Be名無しさん :2006/03/05(日) 15:55:51
回答ありがとうございました。 又はWindows用に作られたファイルのプログラムをちょっと弄るだけで 動くようになる方法とかがあれば シェアを取れる日本のOSとかが出来て良いなーとも思います。 これは無理かな?素人過ぎて失礼しました。
手間を考えると現実的じゃないですな。
>>664 みたいな口だけの奴が多いから、ろくなソフトができない。
マカのmach-oなんてのもあるね。 compat_darwinネタ?
(´・ω・`)結局アマゾンじゃHaribote本が何冊掃けとるかワカランがな
質問 UNIXってCで作られたOSって聞くんですけど、起動部分もCですか? あと、もし起動部分もCなら、 いまx86バイナリ(起動可)が出せるCコンパイラってありますか? 駄問スマソ
言語の事、もうちょっと勉強しような。
やっぱりアセンブラじゃないとだめでしたか。 がんばってアセンブラ習得してきます。
アセンブラで書かれてるわけじゃなくて、最終的には機械語でしか解釈されない。 それにもっとも近いのがアセンブラで、ある程度人間にも理解しやすくしたものがC言語。
Itenium,PowerPc,Sparc の3種類で動くOSを 一発で書きたいんですが、なんとかなりませんか? 仮想アセンブラを想定して、そこから3種類に 吐き出そうと思ってるんだけど、アセンブラって そんなに違うんですか?遅くてもいいから基本的 な命令だけを使おうと思ってるんですが。
ブートセクタで分岐してその後別々に動くなら、昔、86系と68系 どっちでも(PC-9801とX68K)起動するディスクとかあったけど、 ソース全域共有するとなると大変だと思うぞ。 ハード依存の部分以外は無理すりゃ出来んこた無いと思うけど、 Cに比べてメリットあるかなー つーかよく考えたらCって多CPU対応の仮想アセンブラの一種だよな…
どこがC言語で書けなかったかのか、 最後に教えてくれるだけでも助かる。 C言語自体を、もっと細かく拡張してみるよ。 幾らなんでもアセンブラより短くなるでしょ。
俺VM作って、その上で動かす。 どんなに頑張っても言語レベルで吸収できない部分があるのですよ。 まあ、そのへんの隠蔽をコンパイラに押しつければ、見た目は共通になるが。
677 :
ぴゅあ :2006/03/15(水) 01:44:50
> 昔、86系と68系 どっちでも(PC-9801とX68K)起動するディスク 私は残念ながらこの存在は知らないですけど… 私もかなり大変なことだと思いますよ。 > Itenium,PowerPc,Sparc の3種類 ってことですけど、それぞれに共通の命令セットを作り出すとしても、 その仮想アセンブラ(?)を作り上げようというところからして大変そうな・・・ これらはそれぞれがプロセッサですよね? それぞれの命令セットから拾い上げて新たな命令セットが作リ出せたとしても、 まずアセンブラとしてはそれぞれに作らないといけなくなるんでしょう。 そして恐らくどうしてもプロセッサ固有の部分が出てきてしまったりするんでしょう。 でもって、それらプロセッサがあっただけでは無理な筈。 動かすマシンとなるものは、それぞれに既存のものを使ったりすることになるのでしょうし、 それらハードの違いはどうするのか。 中核になる部分をアセンブラにしたいんだ!としても、 下層の部分はどうするんだ?というところになって… 確かにVMを作るとかいうことも考えられたりするのでしょうけど、 「アセンブラにしたい」というところで、アセンブラからイメージされるようなところを 引き出したいということだったりもするのでしょうから、 それが引き出せるのか?ということにもなったりするんではなかろうかと思ったりです。 仮想アセンブラとかを考えたりするくらいなら、 既存の高級言語を使った上でOSとしてどういうものを作るかとか、 或いはOS開発向けの言語として新しい言語を考えてみるとかの方がよさそうにも思えたりですけどね。
678 :
ぴゅあ :2006/03/15(水) 01:46:17
もひとつ >675 > どこがC言語で書けなかったかのか、 誰が誰に聞いているのか判らないところですが・・・ C言語で書けない可能性があるのはmain関数に来るまでの スタートアップルーチン(と呼んでた筈?)の前半にあたる部分になったりするでしょうね。 (書けなくはないだろうけど(OSによると言えると思う)、恐らくCで書かない方が楽だったりするんでしょう) 普通にコンパイラを使っているときには目にすることも少なかったりするものと思いますが、 大抵OSの違いをここで吸収する最初の部分になっているでしょう。
>>673 main(){for(;;){}}
↑これをOSにして、それを動かすアセンブラを各CPU用に書けば良いんジャマイカ
680 :
Be名無しさん :2006/03/15(水) 07:17:50
オーエスー!オーエスー!オーノー?
>>677-678 OSを作るということであれば、命令セットの差なんて些細な問題でつ。
それ以外のアーキテクチャに依存する部分をどうやって抽象化するか…
んで、その問題に対する(たぶん)現実的な解答がVMで隠すということでつ。
初期化処理はOSを起動したいのか、アプリケーションなのかによって話が変わってきますな。
OSの場合はどう頑張ってもCで書けない部分がでてくるので、インラインでもいいけど
アセンブラ必須でつ。
アプリの場合は、OSがある程度初期化してくれるという前提でCだけでも書けまふ。
まあ、とりあえずの課題としてHariboteOSを非AT機に乗っけるなんておもろいかもしんない。
あれはちょいと頑張ればどこに持っていっても動くはず。
しかし、夢があってよいことですなあ。
頑張って勉強しとくれ。
>>681 EFIだとCだけで書けたりしないかな?
最も、EFIの使えるBIOSは全然普及していないが。
683 :
682 :2006/03/15(水) 22:54:36
さすがにタスクスイッチなど、無理な部分はあるか。。
>>682-683 あーEFIならいけるかもしれない。
コンテキストスイッチなら、コンパイラで割り込み関数書ければどうにでもなりまふ。
といっても中身を共通化するのはほぼ不可能ですが。
685 :
Be名無しさん :2006/03/17(金) 23:34:32
OS自作入門って本が売ってたよ。 お金なくて買えなかったけど。
686 :
Be名無しさん :2006/03/19(日) 15:50:42
っつーか、Wineをそのまま軽いLinuxに詰めてOSにすればEジャマイカ
ぜひ作って配布してくれ。 …とlinuxを軽くしようとして挫折した俺が言ってみる。
みんな、EFIとか言葉ぐらい知ってるレベルでも、さぞ俺は詳細まで知ってるんだみたいな 書き方しやがって。ちなみに、俺は言葉しかしらん。
>>686 どっちかてーとXの方が重いような気がするでよ。
まあメモリ管理なんかもすり合わせるに苦労していたはずなので、
そのへんもWineにあわせたOSを作ってしまうのが一番かもしれない。
そうするとReactOSになるような気がしないでもないが。
690 :
は@ c178.016.c3-net.ne.jp ◆cplnFO9T0I :2006/03/20(月) 15:01:32 BE:322790988-
>>689 ReactはデバイスドライバーまでNT4.0と互換性のある奴にするって言うプロジェクトです。
でもWineに特化したLinuxディストリビューションというのも結構面白そうですね。
>>688 wikipediaでEFI(コンピュータ)を見ればなんとなくわかる
ブートセクタがかなり面倒・・・
3/32記念
695 :
Be名無しさん :2006/04/06(木) 00:54:37
>Java言語を使って開発することも可能ですか。 という疑問を持つレベルでは無理。
>>695 >Java言語を使って開発することも可能ですか。
たしかPart2の時にもそんな奴いたよな
699 :
Be名無しさん :2006/04/06(木) 14:24:03
DIO に無視されたのであればあきらめます。 失礼しました。
700get!!
701 :
氏天国 :2006/04/06(木) 14:48:56
WindowsXPマグナム600
相変わらず何の進展もないスレだな
このスレ名物のIPLはK本に喰われちまったからな
704 :
Be名無しさん :2006/04/07(金) 12:10:44
>697 ヒント:ひげぽん
705 :
Be名無しさん :2006/04/07(金) 17:18:53
>>704 途中まで読んで挫折。
記事おおすぎ。
勉強になるのでじっくりと読んでいきます。
>>703 Intel MacのEFIで起動できるIPLはまだ未開拓ですよ!!
>>706 Boot Camp入れればEFIに対応しなくてもIntel Macで動く
むしろ問題はPS/2がないこと
>>707 GPTから起動できるIPLってこと
せっかくEFIという良いものがあるのに
古き悪しきBIOS使うのはもったいないよ
4つしかパーティション切れないしセクタ0が死んだらHDD即死だし
>>708 GPTを使ったら窓と共存できなくなるので時期尚早
もう萌えOSを作る輩はいないのか
めぐたんがあるじぇりあ
>>712 君が作りたいなら作ればいいだけ
GPTやEFIが素晴らしいからと他の人に期待しても
どうせ使わない品って話になるってこと
VistaはGPTくらいサポートするだろ
>>714 GPTは知らないがEFIには対応しない
Windowsの話にすりかわっているが 元々IntelMacの話なんだからWindowsなぞ論外
Boot Campが出てきたことからして、 アップルが現実に妥協せざるを得なかったことは自明。
まああれだ、昔95とNTを共存させて、普段はNTを使って、 ゲームのときだけ95を起動したのと同じようなもんだ。
WinだとかAppleとかは このスレにはどうでも良いことだとおもうんだが そういう話題しかない時点でこのスレ終わってるな
タイトル負けしてるな
そもそも、このスレで生まれ 志半ばで消えたOSはいくつくらいあるんだ?
>>706 GURBの人ががんばっとるので、とりあえずMultiboot specificationに
対応しとけば、なんとかなるんでないかい。
723 :
722 :2006/04/11(火) 00:42:50
うがtypoした。 s/GURB/GRUB/
「ガ〜ブ」 「メイ」 「私たち秘密の友達ですよね!」
このスレ名物のIPLはFDブートオンリーなわけだが。
726 :
Be名無しさん :2006/04/13(木) 21:08:24
最近はSGIのUNIXワークステーションを使いたいが。 これに比べりゃきっとマクもドザも屁みたいなもんだろうな。
IRIXでつか。 優雅でよいですな。
「30日でできる!OS自作入門」を読んでOSを作りたくなったけど、 何の為に作るのかってのが問題で、一歩を踏み出せない・・・。
まあWindowsが無料で軽くて小さけりゃ、作る必要ないんだけどなあ…
730 :
Be名無しさん :2006/04/18(火) 23:39:43
>> 728 729さんの発言に載るつもりで作成開始ですかね。
731 :
Be名無しさん :2006/04/19(水) 04:00:56
現在Mindowsの製作中です
PC向けのOSは、今からじゃ厳しいなぁ、 DOSやwin3.1の時代なら、マイクロソフトに追い付けたかも知れないが。
733 :
Be名無しさん :2006/04/19(水) 14:32:38
どうして?教えてエロイ人!!
MSDOSは、ファイルシステムと糞メモリ管理が主体で、 あとはオマケのようなものが付いてるだけだから、 ある程度、専門的な知識があれば一人で十分作れるよ。 Win3.1はちょっと厄介だが、APIの数が少ないので、 少人数でも十分作れる気がするが、 16bit仕様のWindowシステムは、かなり苦労しそう・・・。
738 :
J :2006/04/21(金) 01:55:19
>>738 JavaVMはどうしたんだろう?
自分で作ったのかな?
>>739 オプソなんだからソースを見れば良いかと。
玄箱使ってPowerPC用のOS作りに挑戦してみようかな。来週の連休あたりから。 PPCだとPC/ATのBIOSにあたる部分の仕組みがよくわからないんだよなぁ。 それに表示系はシリアルポート経由になるだろうけど玄箱には、外部的に シリアルポートがないんで箱開けて内部のpinから伸ばさないといけないっぽ。 ハードの知識も要りそうだ。 それにPC/ATと違って出力はシリアル経由になるだろうしその辺を調べないと "hellow world"さえ出来ないね。
742 :
Be名無しさん :2006/04/28(金) 22:52:32
918 名前:903[] 投稿日:2006/04/28(金) 20:57:06 ID:OS/GNUoL ホムペでは「予定日より遅れる見込み」だったけど、 今帰ってきたら運送会社の不在連絡票があった。 予定より5日早くきたんだね。 早速、再配達依頼出すぞ!
743 :
政府が :2006/04/28(金) 23:07:26
Σの臭いがする
OS作ってみたいのですけど 初心者はまずここを読めって所 ご存知でしたら教えてもらえませんか?
>>745 それすら調べられないなら、諦めたほうがいいよ。
748 :
Be名無しさん :2006/04/29(土) 18:37:46
>>747 ターゲットも目標も同じ意味では。
ちなみに、私個人の意見としては、
ターゲット → 敵
目標 → 女性
ターゲット=機種 目標=どこまで作りこむか
750 :
ぴゅあ :2006/04/30(日) 01:56:16
target→標的
aim→目標(目指すところ)
とか
ま 「ターゲット」も「目標」も単語並べてるだけで
何を指しているか明確になってないし
どうにでも取れるし
てか
> ターゲット → 敵
> 目標 → 女性
が言わんとするところは私には難解だ。。。
なんて話はどうでもいいか・・・
>>745 まずは「OSとは何か」とかからでも?
でないと(かどうかは判らんけど)、
アプリ作ってんだかOS作ってるんだか
よく判らんということもあったりでしょう(?)
数日前、
平気でとんでもないこと得意げに言ってる方
見かけたり・・・
とりあえずOS自作入門って言う本買ってきた。 今は読み物として読んでる。 本気でやったらライフワークになりそうな濃厚さですね…OSって ぼちぼち知識蓄えていきます…
>750 でも逆に、 ・簡単なアプリ作る →何とかOS使わずに起動するようにしてみる →アプリ用のプラグインを作れるように →プラグインで出来ることを増やしていく →いつのまにかOSっぽく …みたいのも有りじゃね? 最初からOS作ろうとしても、すぐ報われない作業ばっかりで飽きると思う。
753 :
Be名無しさん :2006/04/30(日) 17:14:49
755 :
Be名無しさん :2006/05/02(火) 14:59:50
>>754 ・・・発言しにくいのですが、間違いではありません。
ブートのことを勉強できるかと思って・・・。
無理ですかね。
無理 くあしくは詳解linuxカーネルでも嫁
>>755 >>753 って「Linux ソフトウェアアンテナ」のリンクだよね?
本を読んだわけじゃないが、目次を見たところブートまわりのコードは掲載されてなさそう。
758 :
Be名無しさん :2006/05/02(火) 20:19:03
>>757 一応中を見ましたが、ソースコードが書いてあったので、それをいじればと思いましたが、ブートではないソースコードという意味ですね。
ご迷惑をば
759 :
757 :2006/05/02(火) 20:32:40
>>758 書名と目次だけで判断してた。本の中読んでないんで役に立つコードか俺は判断できない。
大変失礼致しました。
760 :
Be名無しさん :2006/05/02(火) 23:16:44
>>759 いえいえ、私もプログラミングの勉強をしているとはいえ、ソースコードを見て判断できるほどの知識を持ち合わせているわけではありません。
混乱させて申し訳ありません。
はじめての486→SunriseOSでもチマチマ解読でおk 次にごく初期のLinuxコードを解読してけば、ある程度の知識はつく。 それからタネ本でも読めば、自作OSも夢ではない。 邪道だけど、「自作OSつくったよ。俺すげーよ。」って自慢をしたいだけなら、OS自作入門で十分。 もれなく印税のうちいくらかは学会にry
じゃあ僕は3番目で
763 :
Be名無しさん :2006/05/03(水) 04:30:28
>>761 >もれなく印税のうちいくらかは学会にry
これってソースあんの?
NHK層化放送局のtron関連番組を真に受ける人は、学会という言葉に敏感ですね
やねう師匠大変なことになってたね…
768 :
Be名無しさん :2006/05/15(月) 07:22:04
祭りは終わった 結論 ・大団円 ・師匠は会社畳む ・ryokoと美人嫁と横谷絵里奈はネカマだった 以上
>・ryokoと美人嫁と横谷絵里奈はネカマだった kwsk
逃げちゃダメだ逃げちゃダメだ逃げちゃダメだ
Faint heart never won fair lady.
775 :
Be名無しさん :2006/05/21(日) 20:19:00
よし、 OS=スイッチ入れたら自動的に何かやってくれるソフトウェア という定義に基づいてOS作ります。
776 :
ぴゅあ :2006/05/21(日) 21:07:09
うーん・・・ 何かやってくれるんではなくて、 何かやれるようにしてくれるものを指すと思ったりしますけどね。 何かやってくれるソフトウェア=アプリケーション のように思ったりです。 (勝手に?)定義するのはいいけど 定義してしまっていいのかどうか。。。 ロボット工作掲示板で似たような話見て うーん。。。と思ったけど…
>>775 目的動作が含まれてるものはOSとは言わない
単なるアプリ
778 :
Be名無しさん :2006/05/21(日) 22:55:49
>>775 OSとかアプリとか気にせず
作りたいもの作ればよいとおもうよ
電源入れたら文章が書けるようになるOSプリーズw
781 :
775 :2006/05/22(月) 15:38:28
ブートセクタだけ作った。 。。。それだけ。 とりあえず本でも買って勉強してみます。
782 :
775 :2006/05/24(水) 17:58:08
フルスクラッチはやめて Linux使う。
今日、自作OS入門買いました。 パラパラと見たけどハードウェアのチェックの仕方とか書いてないのな。 がっかりだ。orz
784 :
ぴゅあ :2006/05/29(月) 10:08:19
>>783 自作…っての辺りがなんともだったりだけど・・・
どんな本かも知らないけど、そういうもんだったりでは?
OSとしての解説となってくるとハードウェア(による違い)はデバイスドライバの先に隠れてしまうんでしょう。
「入門」と付いてたりするのもちょっとひっかかったり(?)
ハードウェアに近付くには「自作デバイスドライバ(入門?)」とかだったりするとか(更には(載せようと思っているファームに合致した)実例コード付き?)
それでも「デバイスドライバとはこんなもん」という感じで期待したいような
> ハードウェアのチェックの仕方とか
には程遠かったりしてそうな。。。
OSとして解説するとき、ハードウェアはデバイスドライバとかで共通化のようなことをされた後とかとして、
構成はどうなっている(どうする)のかとか、システム全体として管理する仕組みとかの話が中心になっていってしまうような感もあるし、
デバイスドライバを解説するときは、デバイスドライバとはこんなもんで、
ハードウェアに関してはそれに合うようにそれぞれ考えてみてね
とかいうような感じになってしまうんだろうと思ったり。
(DOS/V機とか流行るようになってからのことか、全く同じ機能のハードでも「意図的に?」と思えたりしてしまうような微妙な差がそれぞれにあったりするみたいだし、「これ!」というのは解説しにくいんじゃないか?という気もしたりする)
> ハードウェアのチェックの仕方とか
が欲しいと思うのなら、デバイスドライバの作り方+対象としたいハードの解説本(…から考える)とか、実際にそのハードで動いているOSのコード(主にデバイスドライバ…その下層の方)から知るとか、その解説本はないかとかいうことになってしまうんでしょうねぇ。
こういったところは運良く合致するのがあればラッキーだけど、そのままズバリというのはなかなかないもんであると考えるのいいのかも?
>>783 あの本はOSのようなものを作るために最低限必要な情報しか載ってないので、
そういうのが知りたければPC/ATのハードウエア解説書を買った方がよろしいと思われ。
>>784 あの本にデバイスドライバなんて概念は存在しない。
osaskって名前じゃなければ使ってみても良かったんだけどな。 意味わかんねぇし、ダセーし。 もっとスマートな名前は思いつかんかったのか。 オとサって一緒にすると名前のインパクトが微妙なんだよな。 スサノオなら使っても良かったと思う。税金無駄にすんなボケ!
>スマートな名前 NOWSMART
>スサノオなら 乱暴な男が好みなら つ ジャイアンクス
クスはいらねぇよクスは。 つジャイン
790 :
Be名無しさん :2006/05/31(水) 22:07:26
OSAKSって名前はダサいけどGUI搭載は魅力的だよね。 でも作るのは楽しいけど、使って楽しい物では無いな。
OSじさくぬうもんに、この本で作っているOS「張りぼて」と OSASKの特徴として容量が小さいことが上げられている。 OSのサイズとかは10年前じゃないんだからどうでもいいんだけど…
程度問題だろ。 少なくともADSLでCD1枚分落とす気にはなれんよ。 最近のlinuxとか、1枚どころか数枚当たり前だしな。
>>792 メモリが2MByteとか4MByteとか言ってる世界ではそれなりに重要な事ですよ。
まあx86じゃないけど。
>>793 肝な部分だけならCD一枚で余裕だと思いまふが。
794 :
793 :2006/06/02(金) 17:01:04
>>792 いまだにCD1枚でがんばっている Vine Linux はえらい。
OSASKって実はこういう事? OS ASK ASK.jpのOSだからOSASK!?
797 :
Be名無しさん :2006/06/03(土) 00:24:16
ダビンチやフォンノイマンの脳回路をそのままアーキテクチャー化できれば 最強でしょ。前者は少年愛という重大なセキュリティーホールつきだが。
798 :
Be名無しさん :2006/06/03(土) 04:20:53
>>797 君の脳に重大なセキュリティホール(電波アタックに対する脆弱性)が発見されました。
最悪の場合、バッファオーバーランによりありもしない情報を受け取り、他者を混乱させることがあります。
ただちにオカ板あるいはメンヘラ板にて対応パッチをダウンロード・実行して下さい。
>>797 俺にとってそれはセキュリティホールではない
800 :
Be名無しさん :2006/06/03(土) 14:33:26
800げとktkr
>>799 おやおや、早速バッファオーバーランでアンカーがずれたようですが?
相変わらずの駄スレっぷりだな どのへんがOSを作ろうなのかさっぱりわからん 強いて言えばOSを語ろうってところか
このスレのメインテーマだったFDブートIPLは川合本で一網打尽だからな
805 :
799 :2006/06/03(土) 20:46:48
おいこらおまいら何いってやがる 俺は普段ロムってるVB(6.0)しか使えないやつだよ 797じゃねーよ 少年愛で何が悪い
>>805 おまいが良ければそれでいいよ。
・・・だがそれはここで話すことじゃない、他の板に逝け。
気が済んだろ?
>>804 思えば何人もの厨がFDブートIPLやA20やプロテクトモード遷移や
キーボード制御で挫折して帰らぬ人となったなぁ
たが川合本でバカな厨がry 湾岸とか
こんなOSが欲しい。 1. 独自OSとして起動し、他のOS(WindowsやMac、Linuxなど)をその上で複数起動、 スムーズな切り替えが出来るOS型VM Ware。各OSのHDDは1ファイルとして圧縮保存。 このOSから中身を見ることが出来る。また、データディスクとして、複数OSからアクセス出来る、 共有ディスクも設定可能。現在のPC性能から考えれば、多少ネイティブなものより性能が落ちても、 1年前の一般的なPC以上の性能になりそう。 2. ソフトウェアのインストールが、すべて"イメージディスクのマウント"によるもので、 イメージディスクをアンアマウント、削除のみで綺麗にアンインストール出来るOS。 追加で増えていくデータは、イメージディスク内か同フォルダ内に追加され、競合しない。 Pathはそれぞれの起動アプリケーションごとにrootを設定する。 OSが提供するメソッドやデータはすべて読み取り専用。変更が必要な場合は、イメージディスク内に用意する形でプログラミング。 Windowsのレジストリ非依存性アプリ、Macの一部アプリみたいに。
んなもん欲しいのは厨房だけ OSASKの開発でも手伝ってろ
AM/PMっていうコンビニにあるんじゃね?
>809 1.については今回日本政府が発表した新OSが合致します。 VM上でWinを動かしてWinやネットなどから送受信される情報を一旦VMが動いているOSが受け取りにゃんにゃんするそうです。
813 :
Be名無しさん :2006/06/07(水) 21:38:50
すみません。 OS作っている方に質問です。 割り込み関数を作る際のデバッグの方法って、なにかありませんか? 現在、キーボードが入力されたときに呼び出す関数を作成しているのですが、うまくいきません。 どうもキーボードの割り込みが発生した際に、メモリ上の関数のある場所にジャンプせず、どこか別の場所にジャンプしてしまっているようです。 キーボードの割り込みが発生した際にメモリ上のどこにジャンプしているとかわかると非常にデバッグが楽だと思うのですが、何か方法は無いでしょうか。 やはりコードを読んでいくしかないんですかね?
814 :
ぴゅあ :2006/06/08(木) 12:12:55
>>813 私はデバッガとかまず使わないし、一般にプロの間で常識と言われるものとは全く違う手順でコードを書くので参考にはならないかもですが。
> どうもキーボードの割り込みが発生した際に、メモリ上の関数のある場所にジャンプせず、どこか別の場所にジャンプしてしまっているようです。
どの段階まで進んでの話なのかが判りませんけど、まず、メモリ上の関数とは何を指しているのか。かな?
割り込みが発生した時点での割り込み処理ルーチンへ飛んでないのか、
割り込み処理ルーチンへ飛んでから(その問題となる関数が呼び出される以前に)何処かに行ってしまってるのか、
割り込み処理ルーチンの中で呼び出そうとしている(或いはその後の)関数で何処かに行ってしまうのか。
判断はできていたりするんでしょうか。(「どこか別の場所にジャンプしてしまう」ではなくて「ようです。」という表現になっているし)
書いている言語は?というのも関わってくるかも知れませんけどね。
「キーボードからの割り込みルーチンのコードを書いている」というところくらいしか判らないので聞いてみるわけでもありますけど、
「どこか別の場所にジャンプしてしまっているようだ」に対する「それは何処か」を知るというようなことの前段階のものとして、
「期待するその場所に来ているか」ということを確認できる仕組みは準備されているのでしょうか。
それは例えば文字を表示するルーチン。
それは大抵、その場で動作確認もできるでしょうから(というよりそのように作る)、
確実なものにしておけば、動作確認とかにも力を発揮する筈です。
例え文字を表示するような直接意思を示せるようなコードでも、正しく動くように作れていなければ何処かへ飛んでいってしまいます。
(例えばプロテクトモードではセグメントレジスタに入れられたセグメントセレクタが不正だったとかでも)
815 :
ぴゅあ :2006/06/08(木) 12:17:31
長いか。。。失礼 仮に割り込み処理ルーチンへ飛んできているのかどうかが判らないというのだとすると、 その頭で何かの文字を表示するルーチンを呼び出し、無限ループで止めてしまう。 そのときには、NMIも含めて止められる限り全ての割り込みを無効にするようにするとかいうのもやっておくべきでしょう。 例えばCとかで書いているとすれば、問題箇所を突き止めるのは少しめんどくさくもなるかも知れませんけどね。 「そこに到達している」ということが確認できたということは、 「"どこか別の場所にジャンプしてしまっているようだ"ではない」ということが確認できたということになると思いますけどね。 まぁ、原始的でしょ? でも、やれデバッガだ、ICEだとか言わなくても十分に役立つものだと思いますけどね。 Win上とかでBochsとか?を使って動かしてみているんだとかいうことなら、恐らくそれの上で色々できるんでしょうから、 使いこなせればもっと簡単だったりするということにもなったりするんでしょう。 が、もしそうなら質問の仕方も違ってきてるのでしょうね。
816 :
ぴゅあ :2006/06/08(木) 12:18:38
続けて長いの3つもとは申し訳なくも思いますが。。。 > やはりコードを読んでいくしかないんですかね? コードを読むというより、何をやろうとしているか/起こり得るのかということとかを理解し、意識してコードを書くことなんでしょう。 ただコードを読む(或いは眺めてる(?))のでは無駄に時間が掛かるだけだったりもするんでしょうね。 「そこに到達している」か?を確認するとかいう手間は、余計に時間が掛かる(ことが明白に見える)作業ですけど、 その余計な作業で費やされる時間は、期待通りの結果が得られなくて試行錯誤(というより格闘?)する(結果的な)時間に比べて短い時間になる場合の方が多いように思えたりです。 確実になったと確認できた部分はそれ以降頭から外しておけるでしょうし、 確実なものとしようとした分、シッカリとそのコードが把握できているでしょう。 それはサブルーチンといったような形だと更に有効となるでしょうね。 また文字を表示するルーチンは、メモリダンプの機能を持たせるとかして、 飛ぼうとするアドレスが正しいものか?といったようなことの事前確認にも役立つ筈です。 問題となる場所がちゃんと絞り込められれば(それは既にできているのかもですけど)、"コードを読む"とか言ってもその範囲はかなり限定される筈?
>>813 俺もよくやるな、ポインタ演算子やアドレス演算子をつけたり、つけなかったりするミス。
818 :
ぴゅあ :2006/06/08(木) 13:48:34
>>817 そりゃあ可愛いもんでないの?
コンパイル通らんからと、やたらと(闇雲に…の方が適切か?)キャストしまくって
コンパイル通った!…が、動きが変
とかいうのが、Cが解るのが居らんと言うのを多く聞くようになったプロの世界ですんごく増えてたりするのに比べても。。。(−−;
プログラムが書けない奴に説教されてもな。
アセンブラから入ると、Cの変数型チェックの厳格さは地獄だったりする。
Rubyから入っても、Cの変数型チェックの厳格さは地獄だったりする。
ここはインテルアーキテクチャに命を捧げた人たちの墓場ですか? ポインタにfarがつくような言語仕様は逝ってよし
昔SUNの構想してたネットワークコンピューターが現実的になりつつある。 今YouTube見たいなFlashで配信してる動画サイトが流行ってるし、もうすぐGoogleがネットワーク上で動く表計算ソフトを公開するそうだ(Ajax?) 一般的な活用法のブラウジング+メール+ワープロ+表計算+動画音楽再生等は全部インターネット上で実現できるようになる、 つまりOSに依存しない新しい時代が確実にやってくる、未来ではOSは機能が減ってインターネットと個々の機械との橋渡しに過ぎないものになるかもしれない。 今インターネット上で動作するワープロとかその他ツールを作っておけばそのうちでかいビジネスになるかもしれない、 俺はやってみようと思う。
よく落ちるような2ちゃん鯖では絶対に提供して欲しくないサービスだな・・・
825 :
Be名無しさん :2006/06/08(木) 17:15:21
どんなにソースコードを読んでもコンパイラが変なバイナリ吐いてたら無意味。
コンパイラのbugが一番厄介だ。
>>809 VMwareを直接ハードにインストールできればいいわけだ。
>>825 それがVMware ESX Serverなわけだが。
827 :
ぴゅあ :2006/06/08(木) 20:15:16
>>820 型チェックは私はそんなに感じなかったですけどね。
私がポインタを理解できたのはX68Kにアセンブラの環境があってくれたお陰。
x86だったり本だけからだったりしたら到底理解できなかったと思うですよ。
>>821 Rubyだとそんなだったりするかも
(Rubyは使おうということにはならなかったのでPerlを想定してみての話ですけどね)
>>823 > もうすぐGoogleがネットワーク上で動く表計算ソフトを公開するそうだ
なんとも・・・という気が私はしたりですけど。。。
> 未来ではOSは機能が減って
"ブラウジング+メール+ワープロ+表計算+動画音楽再生等"として今のOSから削れそうな機能ある?
久しぶりに本屋に寄ってみたら
>>783 の書いてた「自作OS入門」なんだろう本を見掛けて、サラッと見てみましたけど、
「OS風アプリケーション」て感が。。。
その本を読んでのことかどうかは判らないですけど
その上で
>>775 の話が出てきたのだったりすると
なるほどね…でした。
>>827 あんたはその「OS風アプリケーション」どころか
VBでハリボテアプリを作る能力すらないんだから
しゃしゃり出てこられても迷惑なんだけど。
>827 >「OS風アプリケーション」て感が。。。 あの本の内容をこう感じるセンスはちょっとずれている気がする。 あれはOSとして単純すぎるとは思うけど、あれがOS風のアプリだとは思えない。
>>827 の最後の3行は同意
Kがあんなむちゃくちゃな俺様定義を持ち出すから、バカが増えた。
狂信的原理主義者のほうがよほど有害。
ぴゅあについて少なくとも分かることがある。 それは、初心者に3レスに渡るような複雑な解答をすることは、 すくなくともそれ自体が問題だということが分からない程度に"視野が広くない" ということだ。まあ確かに"3レスの複雑な解答"には他の解釈もあると思う。 しかしそれいずれもが、最終的に彼の賢さを証明するには至らないと思う。
833 :
暇なんでチョーーーカキコ :2006/06/10(土) 12:14:38
IBM 「お前BASIC以外にOSって作れねーの?」 ビル 「今すぐッスカ、時間いただければ何とか」 IBM 「今いるんだよ、何ならテメーの肛門にインストールしたろか」 ビル 「しゅいません、でもデジタルリサーチなんかどうよ。あそこのCP/MチョーCooooooool!!!!ッスヨ」 IBMデジタルリサーチ訪問。でもキルドールは、「あー? 仕事? かったりいよ」 つって飛行機遊び。 IBMぶち切れビルに電話「いねーよ、肛門にPC突っ込むから洗って待ってろよ」 ビル「そんな筆おろしの前に肛門何てかんべんしてくだせー」 ビル、シアトルコンピュータプロダクツにQD-DOSを買いに走る。 ビル 「ちょっとQD-DOSの権利欲売ってください 貞操には変えられないから金はいくらでも払います(IBMのことは隠す)」 泣きながらIBMにきたビルは ビル 「どうっすかこれ。CP/Mなんかまるで問題にならないくらいチョーCooooooool!!!!」 (実はQD-DOSはCP/Mの劣化コピーだった) 辛うじて守られたビルの貞操 こんな感じ?
17 :名無しさん@毎日が日曜日 :2005/09/05(月) 03:08:38 ID:sFj1eKTQ 奇形児を見たことはありますか? これは北海道の網走市であった話です。 古塚美枝さん(当時23) は、いわゆる売春婦でしたが夫がいました。 しかしその夫は働こうとせず、酒に溺れる毎日、そして酔うと必ず美枝さんに 暴力を振るいました。83年の夏、美枝さんは体調を崩し病院へ行きました。 原因は妊娠によるつわりなどでした。売春婦であった美枝さんは、 まず誰の子なのか考えましたが夫の子である事を確信し、 早く報告しようと急いで帰りました。しかし夫は自分の子とは信じず、 中絶を命じました。 それから5ケ月。結局美枝さんは中絶を拒み、 生むことを決意しましたが、夫は従わなかった事を不満に思い、 さらに暴力を振っていました。 そしてその日夫は美枝さんの腹部に 膝蹴りをしました。する と、美枝さんの股間からは溢れる様に血が流れてきました。 そして美枝さんは崩れ落ち、声にもならない 様なうめき声で唸りながら ........流産でした。夫は慌てて家を飛び出して行きました。何故? それは生まれてきた子供が余りにも醜かったからです。目はあべこべに付き、 片方の目は眉毛の上に付いていました。鼻はだらしなく直角に曲がり、 口なんぞは縦向きに、しかも耳のつけねから裂け目の 様に付いていました。 動きもせず、ただこちらを眺めていました。 それからどうなったかは分かりません。 ただ、この話を聞いた人は最低3日間気を付けてください。 うしろで何か気を感じても振り向いて いけません。 それはあの子があなたを眺めているから。 10分以内にこれを 掲示板の5箇所に貼らなければそのままあの子は離れて行きません。
835 :
Be名無しさん :2006/06/11(日) 21:45:51
CP/Mのコピーだから成功したんでオリジナリティ出してたら失敗してた。 コンシュマー、一般人がどれほど保守的であるかを直感的に分かってたのならゲイツはすごい。 無理矢理変える事ないしね。 windowsはmacを意識して無理矢理変えたのでひどいもんになってしまった。 vistaでようやくまともになる。
いや、そんなことはない。 3.1やMeで捨て去ったデザイン、IE搭載前の95のシンプルな安定性・・・ VistaもどうもMac風なデザインを追求した結果、本来搭載するはずだった機能を捨て去ったにもかかわらず、ハイスペックを要求するものになった。 VIENNAもどうなるかはわかんないね。
>>836 95は最初からコアレベルでIEを搭載してますから、
839 :
Be名無しさん :2006/06/12(月) 14:37:04
>>836 macはquartz(openGL)-aqua
linuxはxgl(openGL)-kde/gnome
に対抗してaero(DirectX)-grass(他)にするんだよ。
いままでゲームでしかGPUを使ってなかったのを常時使うようにする。
CPUが描画していたのをGPUに描画させるようにするわけ。
windowsが一番遅れていた。
aero-lunaでも良かった。
今となっては2000/XPが一番低画質が劣っている。
linuxの方がずっと綺麗に描画してる現実がある。
コアに結びついたのはIE4になってからだな。
Win3.1のデザインは、WinXPに勝る
あのころはどんなソフト使っても楽しかった。 今は機能の追求でソフトの面白さが失われているような気がする。 単純に俺が年食っただけかorz
今楽しいのはアダルトサイトの入退会を繰り返して各地を転々とすること。 集めた動画は1TBを超えたがその1割もまともに見ていない。 誇大広告に釣られて初めてダウソした瞬間のドキドキがたまらない。
>>840 3からでつ。
まああのころはシェルに手を出していないので、
それほど強い結合じゃなかったが。
>>842 だって何かやりたい事をする為にソフトを使うんであってソフトを使う為にソフトを使うわけでは無いでしょ。
機能の追求は過去の類似ソフトの機能を吸収してより高める為には必要
あのころはやりたいことの為にソフトを使うというか このソフトを使えばこんなことが出来る。っていう事でソフトを使ってた。 パソコンを使いたいためにソフトを使ってたような感じ。 あの頃はメモリやドライバの設定も自分でやらないとゲームもまともに動かなかった時代だったから とにかくパソコンの色々な使い方を模索していたのかも知れない。 目的なんてなんにもなかったようなあの頃。
ちなみにあの頃ってのはWin3.1の頃
>>846 あったあった。今もそういう感覚が残ってない訳じゃないけど、
それだけじゃお腹一杯にならなくなったのかもね。
コンピュータ好きな人だけが使う世の中じゃないし。
うん
ぐはぁ!
ちょっと前までMonaのスレがあったと思うのですが 探したけど見つかりません。ここがそうですか?
いいくにつくろう
今日も一日疲れました まる。
うちそのスレ無関係だからー
>>858 その割には49回も発言してるようだけどw
まあ疲れたから寝るねー
(^ω^)ノおやすみなさーい
>>858 開発者本人だと思ってたが ??? 状況がよく分からん、
差し支えなければ経緯など語って下さらんか?
俺はさっきゅん=meg-osの中の人=AireOSとかおれんじぺことか≒L様だと思ってた
L様で思い出したけど昔はさっきゅんも崎本様って様付けで呼ばれてた
おはよー(゚◇゚)ノ 今日も一日 おやすみなさい
去年おれぺこPJから除名されて今はおれぺこに関する権限ありませんのでー ていうのを今まで知らなかった人多いのかな?(;゚Д゚)
aireosもおれぺこも同じじゃん もううちは権利ないの
方針の対立でおれぺこfork ↓ 和解して再統合 ↓ 崎本仕事してないじゃん ↓ 除名 ↓ 月日は流れ ← いまココ
∧_∧ (´・ω・`) マターリとお茶でもドゾー ( つ旦O と_)_) 旦旦旦
>872 (´・ω・`)っ 旦 イタダキマス forkしたままだと思ってた人結構多いのかなー?
>>873 なるほどー
誤解してた
方針の対立でおれぺこfork
↓
湾岸仕事してないじゃん
↓
崎本除名
↓
AireOSライセンス騒動
↓
MEG-OS復活 ← いまココ
だけどここをチラシの裏で使っていいという理屈にはならないので
建てた責任を取ってAireOSスレは使い切ってくれ
DAT落ちまで放置でインデネ?
>>875 ガベコレされるのは20以下(即死)か980以上だけなんで
今のまま1レスも付かなくても落ちるのに10年以上掛かりそうだが
いずれにせよここはFD起動IPLで四苦八苦する厨のスレなんで
MEGスレ建てるなりしてここから出て行くのが筋
>>876 崎本様が朝鮮製ばりに厨をサポートしてくれるなら
ここを私物化してもいいと思うニダ
>>877 戦後の混乱に乗じて土地を接収したのと同じ作戦ニッカ?
申し訳ありませんでした 2ch初心者なもので
なんでこんな過疎板にホロン部が来てんだよ
>>879 とんでもないっス
これからも楽しみにしてるっス
∧_∧ (´・ω・`) マターリと高麗人参ドリンクでもドゾー ( つ旦O と_)_) 旦旦旦
>>880 崎本様って反特亜の極右じゃなかったっけ?
884 :
Be名無しさん :2006/06/30(金) 14:47:04
さっきゅんがんがれ
よーし 寝る!!!!!!!!
シュボッ ., ∧_∧ []() (・ω・` ) l二ヽ □と ) ̄⊃ ) ) ⊂ (_(_つ  ̄⊃ / ̄ ̄ ̄ヽ ⊂_ ._⊃ | (\/) | ⊂__⊃. | > < | | (/\). | ヽ___/ ↑ シコシコと開発したOSをすぐに放棄するさっきゅん
おまいら おはよー!!!!!!!!!!!!!
綱引きのときの掛け声ってえどうして おーえす おーえす なんですか? 優しいお兄さんたち教えてください☆
| | ('A`) OSツクルノ マンドクセ / ̄ノ( ヘヘ
OS自作入門買いますた 全部完成したあとに、マイGUIシステムを考えるのが楽しみ
このスレ乗っ取ったさっきゅんって悪い奴だな! やーいばーかばーか
>>894 誘導サンクス
といっても、特に書くこともないけど・・
おまいらおはよう ございます
アッー
>>880 朝鮮製というか超先生だな、その昔そんなスゴイ奴がいたんだな。
合掌(-人-)
/⌒ヽ / ̄ ̄ ̄ ̄ ̄ ( 人 ) /先生! .| | < ぼくの核弾頭は .| | \ もう限界です>< .| | \_____ .| | .| | .| | .| | .| | .| | .| | .| | .| | .| |
マイOSでROMフォントのデータを使いたいのだが著作権上の問題はないだろうか
ありまくり
実行時に吸い出すなら問題ないんじゃ? そうやって文字表示してるソフトはいくらでもあるし?
吸い出したもんを添付しなきゃおkかと
ROMフォントってどうやって吸い出すの?
そんなこと俺だったら、恥ずかしくてとても質問できない・・・
>>906 > ROMフォントってどうやって吸い出すの?
つ INT 10h AX=1130h (AT互換機リアルモード)
チュウゥゥゥッ げっぷ
911 :
Be名無しさん :2006/07/10(月) 12:43:04
コピーを何枚でも作り青いCDケースにいつもしまっているO型がそこにいる!KKK
912 :
Be名無しさん :2006/07/10(月) 12:46:42
911さんあたしそいつしってる!に!
911って飛行機がビルに突っ込んだ事件?
夏は暑いなぁ
915 :
↑ :2006/07/12(水) 02:30:08
鳥取砂丘工業高校パソコン部部長
916 :
タカさん :2006/07/12(水) 22:45:08
雑誌で個人ぷろぐらまーが(オタク)昔、国産として使われた富士通のFMタウン用OSのタウンOS。このタウンOSを元に新しいOSを作っていると。
おい、さっきゅん!おまいこのスレ乗っ取ったんだから責任とってネタふり汁! ・・・「寝たふり」なんてボケかますなよ
さっきゅんなんて最初からいなかったんだよ・・・最初から・・・
919 :
タカさん :2006/07/14(金) 13:01:39
今日、友達に「30日でできるOS自作入門」の本をもらったから今日からOS作ります。皆さんもやってみては。
以前ポケコンで作ったことあるからいいや、x86アーキテクチャなんてアフォなものに嵌まらなければ楽勝。
うん
MEG-OSのCOM64が気になった。exe2comとかelf2comってどこにあるの?
>>924 喪前のレスでアクセスしてみる気になった・・・てか、ブラクラじゃないやん(´・ω・`)
なんか見るたびに変わってるね 今度はグロ画像になった
view.cgiで何か振り分けてるんじゃね?アクセスしてないけど
あの作者の事だからどんなスパイウェアが仕込まれてるやら...
この前はウイルス配ってたな
一応コンパイルするでつ
>>929 俺そのウイルスでパソがバグって弁償しろって泣き喚いてた友人知ってるわ
さっきゅんって昔よそのOSパクって自慢げに64ビット作りましたとかほざいてたやつ? 客は馬鹿だから大きい数字出しときゃびびるとか内輪チャットで吠えてたらしいね(藁
あの当時のさっきゅんは輝いていた 湾岸が乱入してメチャクチャにするまでは・・・
>>933 その噂聞いた事あるぞ
64BITじゃないのに64BITって言い張ってた奴だろ?
本当の作者がブチ切れて訴訟問題になりそうになって名前変えて逃げたんだっけ
>>934 さっきゅん名無しで乙
無理やり美化しようとしても証拠は上がってるぞ(藁
↑ディスプレイの前で真っ赤なさっきゅん
急に更新がたくさん入ったと思ってきてみたらさっきゅんネタか ところでさっきゅんって誰?
さっきゅんて湾岸さん達ががんばって作ったソフトを全部自分で作った事にしてたんだっけ 湾岸さんは最初我慢してたけど耐え切れなくなっておれぺこは崩壊 この件で何人も恨み買って今は別の名前で同じような事してる どんどん敵を増やしてそれでもさっきゅん
943 :
Be名無しさん :2006/07/17(月) 18:58:09
>>941 なあ、1000取った奴がこのスレの支配者ってことにしない?
湾岸自体手のつけようがない厨房な件
>>943 は、注目されていなくて寂しいさっきゅんがスレッドの伸びを期待して書いたよう。
「支配者」という発想は、とても他の人が真似できないところだと思うんだよね。
ごめん。一つ浪費した。
>>945 今はWeb 2.0の達人気取りでCatalystのセッションなんかやってるYO!
 ̄ ̄ ̄ ̄ ̄ ̄ ̄○ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ O 。 , ─ヽ ________ /,/\ヾ\ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ |__|__|__|_ __((´∀`\ )< というお話だったのサ |_|__|__|__ /ノへゝ/''' )ヽ \_________ ||__| | | \´-`) / 丿/ |_|_| 从.从从 | \__ ̄ ̄⊂|丿/ |__|| 从人人从. | /\__/::::::||| |_|_|///ヽヾ\ / ::::::::::::ゝ/|| ────────(~〜ヽ::::::::::::|/ =このスレ 完 =
>>946 「1000でこのスレの支配者」て、過去のネオ麦の台詞だろ。
発想がさっきゅん的じゃなく、さっきゅんみたいな精神疾患はありふれていて、
過去に問題を起こした人もなんか似てましたというそれだけの話。
なんというか思い込みで話を構築して根っこからガラガラ崩れるのって
極めてさっきゅん的だから、
>>946 は注意して生きたほうがいいな。
ああ、本人かも知らんけどw
>>947 やっぱりどうしようもない厨房だな・・・
そんなことより、まともな次スレどこ?
このまま埋めちまおうぜ
作ろうスレ略歴 1. 太郎がOS板で作ろうスレを建てる 2. 太郎がム板で作ろうスレ2を建てる 3. 太郎がム板を追放されてOS板に逆戻り 4. 太郎が作ろうスレから追放されて分離 5. 作ろうスレが厨房の受け皿になる 6. 太郎がOS板から追放されてシベリアに流刑 7. 川合本が出て厨房の受け皿が移る 8. 作ろうスレがさっきゅんに乗っ取られる←今ここ
72 名前:Be名無しさん[sage] 投稿日:2006/07/16(日) 23:21:01
実際は教えてるんじゃなくて、ただソース提示してこれコンパイルしたらできるよって言ってるだけ。
K本がこの程度なのに、勝手にテーマ設定されてもねえ。
どうせ
>>955 =あっちのスレの
>>1 なんだろ?
>>957 厨房の相手はKに押し付けとけばいいんだよ
雑談がしたいなら総合雑談スレだってあるんだし
厨房の質問に責任持って答えてくれるんなら
このスレの支配者にでも何でも勝手に即位してくれたまえ
いや、このスレの支配者はさっきゅんだから。
崎本様七誌で乙
なあ、1000取った奴がこのスレの支配者ってことにしない?
ネオ麦茶七誌で乙
支配者争いが激しいなw
>>966 MonaスレがVIPに建てられて即落ちしたね
だから今はシベリア
夢タソがVIPでMonaの派生OS作ってたけどどうしてるかな
結局Monaに戻ってlibcとか作ってるみたいだけど
ソープで中出ししてきましたヨ!! やっぱ生は最高!!!! エイズになっても構わない!! ナマは気持ちイイ!!!!!
誤爆スマソ
なあ、手取り足取り教えてもらってOSを作った奴がこのスレの支配者ってことにしない?
ぬるぽ
てす
975 :
太郎様 :2006/07/17(月) 20:33:34
今更こんなスレいらね( ゚д゚)、ペッ
では我輩がもらおう
ぬるぽ
( ・∀・) | | ガッ
と ) | |
Y /ノ 人
/ ) < >__Λ∩
_/し' //. V`Д´)/
(_フ彡 / ←
>>972
( ・∀・) | | ガッ
と ) | |
Y /ノ 人
/ ) < >__Λ∩
_/し' //. V`Д´)/
(_フ彡 / ←
>>977
>>959 異議がなければ崎本様に即位していただきますが?
ぬるぽ
( ・∀・) | | ガッ
と ) | |
Y /ノ 人
/ ) < >__Λ∩
_/し' //. V`Д´)/
(_フ彡 / ←
>>981
ぬるぽ
>>982 それでは二人の崎本様同士で決闘していただきましょう
, -‐'"´ ̄ ̄ ̄ ``ヽ
/爪 ヽ `ヽ、`ヽ、 \
/ / !lヽヽ \ \ \ }、
. / l l l ヽ ヽ、_弐_ --ヽ _ヽノノ!
/! ll__l ヽ-‐' "┴/` l/rヌ、ノ|
!l/fri刀 >'〉} ノ!
l ̄ 、 _ ,Lノノ |
', ヽ'´ヽ / | 「||l!,| 皇国の興廃この一戦にあり
ヽ、 ー' / .| | | |!| 各員一層奮励努力せよ!
``ー-ャァ' ´ _」、lLl l!|
__ノ /==三三ヽL
/ }ム/==ニ三-ァ-─‐ヽ
」ll /○/ ニ, -'´ / , -'´!
i´{、/ // / , -'´_ |
/ ̄  ̄ ー─‐'´ l | ●| .|、
/l /`ヽ崎本まりあ様 ノ  ̄ ̄/」ヽ
/ l/ l 、 ヽ / /'iヽヽ
( ・∀・) | | ぬるぽ
と ) | |
Y /ノ 人
/ ) < >__Λ∩
_/し' //. V`Д´)/
(_フ彡 / ←
>>983
>>984 くそー今日はバグが多いな
能書き垂れてないで何とかしてくれよ
>>959 ( ・∀・) | | ガッ
と ) | |
Y /ノ 人
/ ) < >__Λ∩
_/し' //. V`Д´)/
(_フ彡 / ←
>>984
2chの使い方わすれたから寝るー(*^-^*)ノ
( ・∀・) | | ガッ
と ) | |
Y /ノ 人
/ ) < >__Λ∩
_/し' //. V`Д´)/
(_フ彡 / ←
>>987 =ぬるぽ
ぬふあうえおやゆよわほへー る ぽ
\/\/\/\/\/\/\/\/\/\/\/\/\/\/ こ こ か ら 超 濃 厚 な ホ モ ス レ に な り ま す。 ご 期 待 く だ さ い ! ! /\/\/\/\/\/\/\/\/\/\/\/\/\/\
/⌒ ̄ ̄ ̄\ ρ 「う〜〜トイレトイレ」 /川‖‖| ‖| ゝ 今トイレを求めて全力疾走している僕は 〈巛《〈〈 \巛 | 予備校に通うごく一般的な男の子 │个 个 ヘ | 強いて違うところをあげるとすれば │┌− )/ 男に興味があるってとこかナー ヽヽ 丿// 名前は道下正樹 ┼┬┼ /┴┴┴┴┴ ̄\ | │ ┤ \ | │ │\ \ | │ │ \ \ | │ /│ │ │ | │ / │ │ │ ┌─ヽ 」 │ │ │ ├┴┴┴┴┤ 田田 │ │ ‖ ヽ / │ ├-┤ / / LllLノ
;ヾ、,.、,、.、rツ ッッシ、:':' r':' _,、-'゙_, や 公 帰 そ ,、,、,ミッン、,._ _,、-'゙_,、-'゙. っ 園. り ん 、ィッ ,:、 ゙''ゞ=ミ、~.: _,、-'゙_,、-'゙ __, て の 道 な }; ヾ ゙' {!li;:,. _,、-'゙_,、-'゙ _,、-'゙,::|_| 来 ト に わ ゞァ''゙ぐ _,、-'゙_,、-'゙ _,、-'゙,、-''" .|_ た イ あ け ,ヘ:'_,、-'゙_,、-'゙..::「┴_,エ ┴ ''"_|_| の. レ る で └i'゙-ニ,ニエ,.:|ニ「 _エ ┴ ''"_|_ だ に |エ | ニエ, |ニ「 _エ ┴ __.|_|_ |エ | ニエ, |ニ「 _エ ┴ 「fj.||__|__| _| |エ | ニエ, |[8] _エ ┴ └‐_|_|__l__,|⊥ |__ |エ | ニエ, |二 _.エ 二.._ |__|__| _|_|_ |エ | ニエ, |┴ _.エ 二.._ |_|__l__,|⊥ |__| |エ | ニエ, |工 _.エ 二.._ |__|__| _|_|_ |エ | ニエ, |工 _.エ 二.._ |_|__l__,|⊥ |__ -,-=''┷━━|┬ニエ ┬-- .|__|__| _|_|_ ''ーニ_''ー::、_ ゙┷ 工_二'‐-、,_|_|__l__,|⊥ |__ 二二二`''ーニ`_''ー-、_¨''━、L|__|__| _|_|_ 二二二二二二二`''ーニ_''ー 、_ |⊥ |__
〃∩ カタ... ぽ ⊂⌒(゚д゚) る `ヽ_っ_/ ̄ ̄ ̄/ ぬ \/___/ 旦
,.、、.,_ 座 ベ ふ _,,.、、、、、.,,_ ,ハ爪、,::゙ヽ. っ ン と /.:::::::::::::::::::..`ヽ、 `l 'i 'i'`ln:} て チ 見 / .:::::::::::::::::::::::::::::::. '、 l ゙ァ 人{ い に る | :::::::::::::::::::::::::::::::::,ヘ{ツ `コfェエlユュ た 一 と | ::::::::::::::::::::::::,ィゥ ノ j /;.;.ヽ ヽ, 人 |::::::::::::::::::::::( |.! ;{ l;.;.;.;.;.| i'、 の .|::::::::::::::::::rリ`l,〉 j}゙ '!;.;.;.;.;| !;'!_ 若 }:::::::::::::::ノ゙ l / '!;.;.;.;.| 「 ||| い ,xァ''ー'゙'` '、 / ノ;.;.;.;..j |,,||| 男 / ー`¨`''''ー-- 、」゙'′_ ..,;:';;'. ;:;:;:;.. /;.;.;.;/ __三」 ||| が ''^ーァ 、_____  ̄ / __/;.;.;/lニl-'┴┴厂 `>'、, '''"´ ̄ ̄_二ヽ、 ,';';'; / >'′ | | l`'Y'))i / / ヽ `ー' :;:;: ,|-' 'ー'ニノノ,.,:,:,: ,' , / ゙、""''''''-= :,,_ /| l: : :"''|'′,.,.,.,. l / __ ! / :| l: : : :.| l, l く,_ 、 | /_:::| l: : : :| ''''ー--_ 、、,,,_リ `ヽ、ヽ, ,! /  ̄`''ー'、  ̄`¨`'''|! _,,..、二,,_,〉'_ー_/ , ,、 `ヽ, |! 'ー''"´ '! / /ニ''''ー ---'-
∧_∧ / ̄ ̄ ̄ ̄ ̄ (ω・ )ゝ < ぬるぽ? . ノ/ / \_____ ノ ̄ゝ
/ ,. ===、、 ヽ ば | | l ', ど し か | _... -―‐-'∠.._ l こ. い や に ! ,. '´: : : : : : : : : : : :`ヽ | い. つ が 」 //: : : : : : : : : : : : : : : : ヽ | つ も っ / /´/: ..l l ! l l . ..', /. も て ! ′l: l: :|: :.!: :|l: :!、:l',: :!: :.|: l: !:l:| '´ ̄`ヽ、,.- 、,.ィ´ ! |. |: !: :!:`ト、l_V, N Llィ´!:///:.',__ ′ ,. -、|. _.Vヽハ:.( ヒソ´ `ヒソ )イ): : : :ヽ: : :├‐ - 、 -、/ ` ノ: : :.r ハ'' '' ''_''_''_'' '' '' /、rニl: : :ヽ-: 〉、: : :.|、 ′ ,:'´|: : ,ィ7:/ ヽ、_{、......,}_,.ィ´ヽヽ┤`ヽ、-‐ヽ:_`_:l、:ヽ |: : l/: : :!:l ! `T´_...-l-.、 !:|イ: : : : `! l、_|、 /ヽ_〈: : : :.N./ ̄_7,「|\_.. :.:.:.7'フ: : : : /7 |: : : :〉 |,. ヘ.:ヽ: : : :ヽ:.:.':´/__o_ヽ:.:.:./7: : : : :/:./`丶、 `ト、/、 _.. - '" ヽ_|、: : :_|:\:.:/:/ |:.`:‐┘、ヽ-‐ '- '.._ `丶、: / ´ _..- '"l _.二<:.:.:.:.´:.| |:.:.;. -‐イ ̄:`:丶、 `丶、 `丶 _.. - '" |: : : :l´: : : : :ヽヽ-┘ '´ /ヽ:、: : : : : | ,丶、 ``|: :l: _: -:'"ハー - ― ―/ ヘ:.`丶、/、 ー'-ァ´ `` >": : :/ ヽ、 _ _/ \: : : : :\ /: : : :/ \: : : : : > `ヽ: :./ \: : :| ∨ ヽ/ / ', / /\ / , ' ', / / /、
崎本様のために取って置いてね!!! (勝手に1000getした香具師はコロ助) ↓↓↓↓↓↓↓↓↓↓↓
 ̄ ̄ ̄ ̄ ̄ ̄○ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ O 。 , ─ヽ ________ /,/\ヾ\ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ |__|__|__|_ __((´∀`\ )< というお話だったのサ |_|__|__|__ /ノへゝ/''' )ヽ \_________ ||__| | | \´-`) / 丿/ |_|_| 从.从从 | \__ ̄ ̄⊂|丿/ |__|| 从人人从. | /\__/::::::||| |_|_|///ヽヾ\ / ::::::::::::ゝ/|| ────────(~〜ヽ::::::::::::|/ = 完 =
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。