ひげぽん<><>02/06/18 23:48<> 独自にOSを作っているまたは、作ろうとしている人たちのための <br> スレッドになればと思います。 <br>  <br> では私の疑問から <br> (1)OSを作る場合、CPU周りに本当に近いところはアセンブリで <br> 書かないと無理なのでしょうか。 <br>  <br> 私が、ソースを眺めたことのあるlinuxや、OSASKは、アセンブリと <br> Cで書かれてます。 <br> (2)昔JavaBasedOSのソースを見たことがありますが、 <br> 結局はCで書かれている所が多かったです。 <br> リアルタイム処理が苦手なJavaでOSを作るのは無理なんでしょうか。 <br>  <br> Javaマシン(バイトコードをそのまま処理するやつね)上で <br> 動かすなら事情は違うのでしょうけど。 <>OSをつくろうpart2
デフォルトの名無しさん<>sage<>02/06/18 23:49<> もう外出だよ <>
2<>sage<>02/06/18 23:50<> Σ(´д｀) <br>  <br> ････2getｼﾄｹﾊﾞﾖｶﾀ･･･ <>
デフォルトの名無しさん<><>02/06/18 23:51<> 1はちょっと本気っぽいな。 <br> がんばれよ。 <>
2<>sage<>02/06/18 23:51<> あ、しかもちゃんとpart2ってあるな・・・ <br>  <br>  <br> 　　　　 ||  <br> 　　　Λ||Λ  <br> 　　（ / ⌒ヽ  <br> 　　　| | 　　|  <br> 　　　∪ 亅|  <br> 　　　 |　|　|  <br> 　　　 ∪∪  <>
manko_chinko<><>02/06/18 23:53<> カーネルだけで何万行ぐらいだろう、、、 <>
デフォルトの名無しさん<><>02/06/18 23:53<> linuxとOSASKを並列にするのもどうかと思うが･･･ <br>  <br> けどアセンブリで書かなきゃいけないところってそんなに多くないよね。 <>
デフォルトの名無しさん<>sage<>02/06/18 23:55<> アセンブリで書かないと逝けないのはブートローダーと、 <br> IO関係でタイミングがシビアなドライバだけ。 <>
ひげぽん<><>02/06/18 23:55<> <a href="../test/read.cgi/tech/1024411711/4" target="_blank">&gt;&gt;4</a> <br> ありがとう。 <br> <a href="../test/read.cgi/tech/1024411711/6" target="_blank">&gt;&gt;6</a> <br> そうですね。途方も無いですね。 <br> しかも、洗練されたコードが数万行・・・ <br> それよりも、デバイスドライバーがきついかも。 <br> <a href="../test/read.cgi/tech/1024411711/7" target="_blank">&gt;&gt;7</a> <br> そうなんですよ。 <br> 一部アセンブリ（パフォーマンスが重要なところ。。。) <br> ですよね。 <>
デフォルトの名無しさん<><>02/06/18 23:56<> ユニックスのソースコード <br> int main(){ <br> for(;;) <br> getChar(); <br> } <>
ひげぽん<><>02/06/18 23:58<> <a href="../test/read.cgi/tech/1024411711/8" target="_blank">&gt;&gt;8</a> <br> アセンブリって、CPU毎に違うんですよね? <br> 何か良い参考書をご存知ありませんか？ <br> 特にOS作成にかかわる部分で･･･ <>
デフォルトの名無しさん<>sage<>02/06/18 23:59<> <a href="../test/read.cgi/tech/1024411711/11" target="_blank">&gt;&gt;11</a> <br> インテルのマニュアル <>
デフォルトの名無しさん<><>02/06/19 00:01<> ひげぽんって何歳？ <>
ひげぽん<><>02/06/19 00:01<> 1&gt;&gt;にも書きましたけど <br> almost javaでOSは無理っすかね？ <br> 優秀なnativeコンパイラがあれば出来るのでしょうか。 <br> JavaのほうがCよりも得意です･･･ <>
デフォルトの名無しさん<><>02/06/19 00:01<> アセンブラなんて、大学の時の授業で、Win上で動くZ80エミュレータ用 <br> の書いたのが最後だ、、、。 <>
デフォルトの名無しさん<>sage<>02/06/19 00:02<> Intelのマニュアル群だ、開発者どもは見とけ！ <br>  <br> http://www.intel.co.jp/jp/developer/design/litcentr/index.htm <>
ひげぽん<><>02/06/19 00:03<> <a href="../test/read.cgi/tech/1024411711/11" target="_blank">&gt;&gt;11</a> <br> &gt;インテルのマニュアル  <br> うぅ。 <br> やはりそうきますか。 <br>  <br>  <br> <a href="../test/read.cgi/tech/1024411711/13" target="_blank">&gt;&gt;13</a> <br> 24才です。もしや年齢制限あり？ <>
デフォルトの名無しさん<><>02/06/19 00:04<> そうそう。前から思ってたんだけど恥かしくて聞けなかったので聞く。 <br>  <br> よく言う機械語ってCPUが解釈できる言語（？）というかデータと教わったけど、 <br> ＯＳによってバイナリコードって違うじゃん。 <br> ってことは、OSがexeファイルとかを機械語に翻訳してるの？ <>
ひげぽん<><>02/06/19 00:05<> <a href="../test/read.cgi/tech/1024411711/16" target="_blank">&gt;&gt;16</a> <br> thanks!! <br> しかも日本語じゃん。 <br> なんかわくわくしてきた。早速読ましてもらうよ。 <br> これだけでこのスレッド立てた意味があったよ。 <>
デフォルトの名無しさん<>sage<>02/06/19 00:07<> <a href="../test/read.cgi/tech/1024411711/18" target="_blank">&gt;&gt;18</a> <br> それ俺も気になってた。 <>
ひげぽん<><>02/06/19 00:08<> 間違ってたら誰か突っ込んでね。 <br> <a href="../test/read.cgi/tech/1024411711/18" target="_blank">&gt;&gt;18</a> <br> .exeファイルそのものが実行イメージだと思う。 <br> メモリーにロードされてそのまま実行されるんじゃないのかな。 <>
18<><>02/06/19 00:11<> <a href="../test/read.cgi/tech/1024411711/21" target="_blank">&gt;&gt;21</a> <br> 恥を忍んでさらに聞く。 <br>  <br> じゃあ、exeファイルもx86系のCPUで動いてるほかのOSのバイナリ <br> コードと（ヘッダとかそういうの除いて）同じなわけ？ <br>  <>
デフォルトの名無しさん<> sage<>02/06/19 00:12<> OSによって違うのは、ヘッダとか、データとの <br> 配置レイアウトとか、DynamiｃLinkするテーブルとか。 <br> 実行される機械語としては、OS毎に違いは(あんまし)ない。 <>
18<><>02/06/19 00:13<> <a href="../test/read.cgi/tech/1024411711/23" target="_blank">&gt;&gt;23</a> <br> そうなんだ、、知らなかった、、。ありがおつ <br>  <>
デフォルトの名無しさん<><>02/06/19 00:13<> つかぬ事をお聞きしますが、Windowsはどんな言語で組まれているんでしょうか？ <>
ひげぽん<><>02/06/19 00:14<> <a href="../test/read.cgi/tech/1024411711/22" target="_blank">&gt;&gt;22</a> <br> OSによって異なっているハードウェアへの制御のコードの部分もあるから <br> まったく一緒で互換性があるとはいえないじゃないかなあ。 <br> うーん自信なしです。→誰か識者さん助けて。 <br>  <>
デフォルトの名無しさん<><>02/06/19 00:14<> <a href="../test/read.cgi/tech/1024411711/25" target="_blank">&gt;&gt;25</a> <br> COBOL <>
デフォルトの名無しさん<><>02/06/19 00:15<> あと、システムコールとか違うだろ <>
ひげぽん<><>02/06/19 00:15<> <a href="../test/read.cgi/tech/1024411711/25" target="_blank">&gt;&gt;25</a> <br> 昔C++で組まれていると聞いたことがあるがどうなんでしょう。 <br> <a href="../test/read.cgi/tech/1024411711/23" target="_blank">&gt;&gt;23</a> <br> THANKS これからもよろしく <>
18<><>02/06/19 00:15<> <a href="../test/read.cgi/tech/1024411711/25" target="_blank">&gt;&gt;25</a> <br> それは聞いた事ある。 <br> 基本はC/C++で、MFC使って書いてるらしい。 <br> このMFCも外部に出してないMS秘蔵のMFCがあるらしい。 <br>  <br> ま、OSでも上層部分の話だろうけど。 <br>  <>
デフォルトの名無しさん<><>02/06/19 00:16<> どんなC/C++コンパイラ使ったんでしょうか <>
18<><>02/06/19 00:17<> まあ、どの部分までを"OS"って呼ぶかだよな、、 <>
デフォルトの名無しさん<><>02/06/19 00:17<> おほほ領すレの予感 <>
ひげぽん<><>02/06/19 00:18<> NTのカーネルのソースは見てみたいね。 <br> マイクロカーネルなんですかね？ <br>  <>
ひげぽん<><>02/06/19 00:19<> <a href="../test/read.cgi/tech/1024411711/31" target="_blank">&gt;&gt;31</a> <br> INTELってコンパイラ出してましたよね。 <br> あれってどういう開発者が使うんでしょうか？＿ <br> デバドラ関係? <br>  <>
デフォルトの名無しさん<>sage<>02/06/19 00:20<> <a href="../test/read.cgi/tech/1024411711/34" target="_blank">&gt;&gt;34</a> <br> いや………当初、それがｳﾘだったんですが。 <>
ひげぽん<><>02/06/19 00:21<> <a href="../test/read.cgi/tech/1024411711/30" target="_blank">&gt;&gt;30</a> <br> C++なら、ある程度はオブジェクト指向でかけるので <br> C ONLYよりはいいかも。 <br> でも秘蔵のMFCってやだなあ。 <br>  <>
ひげぽん<><>02/06/19 00:22<> <a href="../test/read.cgi/tech/1024411711/36" target="_blank">&gt;&gt;36</a> <br> やっぱりそうなんですか。 <br> 最近なんかの本に書いてあったのを見た記憶があります。 <br>  <br> ある程度は成功してるってことですよね。 <br>  <>
デフォルトの名無しさん<>sage<>02/06/19 00:24<> 俺も、UNIX(初期のじゃない)がC書かれたように <br> C++で独自OS(高性能)を書いて見たいですね <>
ひげぽん<><>02/06/19 00:24<> <a href="../test/read.cgi/tech/1024411711/36" target="_blank">&gt;&gt;36</a> <br> マイクロカーネルは、カーネルを細かいモジュールに分けて <br> 複雑さを取り除こうという概念ですよね。 <br> きちんと役割分担をもたせる。 <br>  <br> でもそれって、モジュール間の関連が複雑になるんですよね。 <br> モジュール数が増えれば増えるほど・・・ <>
ひげぽん<><>02/06/19 00:26<> <a href="../test/read.cgi/tech/1024411711/39" target="_blank">&gt;&gt;39</a> <br> おいらもっす。 <br> ていうか、ここで同志を見つけたり <br> 自分のモチベーションを上げたいですね。 <>
ひげぽん<><>02/06/19 00:28<> どうなんでしょうか。 <br> 既存OSをベースにするならunix系かなと思うんですが、 <br> 必ずしもunixの設計が理想的とはいえないと本で読んだことがあるし <br>  <br> 分散化とか考えたら頭がパンクします。 <>
デフォルトの名無しさん<>sage<>02/06/19 00:29<> <a href="../test/read.cgi/tech/1024411711/40" target="_blank">&gt;&gt;40</a> <br> モジュール感の関連を疎遠な物にするためのマイクロカーネルだが。 <br> 複雑なのはﾓﾉﾘｼｯｸ <>
ひげぽん<><>02/06/19 00:30<> <a href="../test/read.cgi/tech/1024411711/43" target="_blank">&gt;&gt;43</a> <br> おお。ﾓﾉﾘｼｯｸとは何ですか。。 <br> 勉強になります。 <>
ひげぽん<><>02/06/19 00:35<> 勝手にリンク <br> [OSASK] <br> ttp://www.imasy.org/~kawai/osask/index.html <br>  <br> ほかにもあったら紹介してほしいな。 <>
デフォルトの名無しさん<><>02/06/19 00:37<> atheosとかは？ <>
デフォルトの名無しさん<><>02/06/19 00:38<> <a href="../test/read.cgi/tech/1024411711/45" target="_blank">&gt;&gt;45</a> <br> thnx！今はvmwareがあるから便利だね。 <>
デフォルトの名無しさん<>age<>02/06/19 00:39<> Powers CEベースのＯＳを作るというのはどうですか？ <>
ひげぽん<><>02/06/19 00:50<> スレッドがにぎわってきてうれしいです。 <br> <a href="../test/read.cgi/tech/1024411711/46" target="_blank">&gt;&gt;46</a> <br> 明日会社で見て見ます・・・ <br>  <>
ひげぽん<><>02/06/19 00:56<> <a href="../test/read.cgi/tech/1024411711/47" target="_blank">&gt;&gt;47</a> <br> vmware上でOSの実験とかって出来るんですかね。 <br> ブートとか。 <br> vmwareつかったこと無いです。 <>
デフォルトの名無しさん<><>02/06/19 01:18<> 現代的なＯＳは、メモリ管理やプロセス管理、 <br> それらを安全確実なものにするための <br> ハードウェア的なメモリ管理機構の活用が当たり前だけど、 <br> それとは違ったアプローチでもちゃんとした環境が作れる。 <br> その例が、SmalltalkやJavaVM。 <br> こちらからのアプローチで勉強するのも悪くない。 <br> ＯＳというのとは違うけれど、色々と参考になると思うよ。 <br>  <br> もし一般的なＯＳと同じ構成のそれを作りたいのなら、 <br> アスキーから出ている「はじめて読む４８６」がいい入門になる。 <br> 他にも、ピアソンから出ている「オペレーティングシステム 第２版」が <br> ＯＳの教科書の古典として有名。 <br>  <br> http://www.ascii.co.jp/books/detail/4-7561/4-7561-0213-1.html <br> http://www.pearsoned.co.jp/washo/operate/wa_ope03-j.html <>
デフォルトの名無しさん<><>02/06/19 02:06<> 漏れはPowers CEでOSを勉強した。 <>
デフォルトの名無しさん<>sage<>02/06/19 02:16<> Powers CE ってなんだ？ <br> ググってもそれっぽいのが引っかからないが。 <>
デフォルトの名無しさん<>sage<>02/06/19 02:17<> patroで検索 <>
デフォルトの名無しさん<>sage<>02/06/19 02:34<> さっぱり引っかからん。 <br> 直リンくれ。 <>
デフォルトの名無しさん<>sage<>02/06/19 02:35<> ここにも粘着君（<a href="../test/read.cgi/tech/1024411711/52" target="_blank">&gt;&gt;52</a>）が居たか・・・ <>
ひげぽん<><>02/06/19 23:07<> <a href="../test/read.cgi/tech/1024411711/51" target="_blank">&gt;&gt;51</a> <br> ありがとう。 <br> 初めて読む486本屋で探してみます。- <>
ひげぽん<><>02/06/19 23:09<> さてまじめにOSを作ろうとしている（または挫折した人) <br> お話をぜひ聞かせてください。 <>
デフォルトの名無しさん<>sage<>02/06/19 23:09<> 絶版 <>
ひげぽん<><>02/06/19 23:13<> <a href="../test/read.cgi/tech/1024411711/59" target="_blank">&gt;&gt;59</a> <br> まじっすか？？？ <br> むしろ図書館で探すか。 <>
ひげぽん<><>02/06/19 23:25<> atheosちょっと見てみました。 <br> やはり、ある程度はアセンブリが必須なんですかね。 <br> vmware誰か使ったことあるっすか？？？ <>
デフォルトの名無しさん<>sage<>02/06/19 23:27<> <a href="../test/read.cgi/tech/1024411711/59" target="_blank">&gt;&gt;59</a> <br> おいおい。うそつくなよ（藁 <>
ひげぽん<><>02/06/19 23:38<> x86アーキテクチャ入門講座 <br> http://ha3.seikyou.ne.jp/home/Joyit/asm/regs.html <>
デフォルトの名無しさん<>sage<>02/06/19 23:49<> アセンブラとかの本は需要が無いのか絶版多し。 <>
デフォルトの名無しさん<><>02/06/19 23:51<> 便乗質問。 <br> 昔あった98テクニカルデータブックとか <br> IBM PC-ATハードウェアバイブルとか <br> この手のに相当する資料って今はどっから入手するものなの？ <>
デフォルトの名無しさん<>sage<>02/06/19 23:54<> 持ってる香具師からもらうしかないんじゃないの？ <>
ひげぽん<><>02/06/19 23:54<> <a href="../test/read.cgi/tech/1024411711/64" target="_blank">&gt;&gt;64</a> <br> そうですね。本当にごく少数の人しか今は使わないですよね。 <br> アセンブラで書く部分はコード的には量は少ないけど <br> きっと重要なところなんですよね。 <>
デフォルトの名無しさん<>sage<>02/06/20 00:05<> <a href="../test/read.cgi/tech/1024411711/66" target="_blank">&gt;&gt;66</a> <br> ドライバ屋なんかが参考にする書籍って売りに出てないのかなぁ。 <>
ひげぽん<><>02/06/20 00:08<> <a href="../test/read.cgi/tech/1024411711/68" target="_blank">&gt;&gt;68</a> <br> 見つけたらぜひ紹介してください。 <br> 68さんもOSを作ることに興味があるんですか･ <>
ひげぽん<><>02/06/20 00:19<> よく見たらアセンブラのスレッドがありますね。 <br> ちょっと今から読んでみます。 <>
デフォルトの名無しさん<>sage<>02/06/20 00:19<> <a href="../test/read.cgi/tech/1024411711/69" target="_blank">&gt;&gt;69</a> <br> 興味はあるけど時間はない(藁 <br> テクニカルデータブックなら手元にあるから <br> 古い98を買って何か作りたいなーなんて、たまに思うくらい。 <>
デフォルトの名無しさん<>sage<>02/06/20 00:21<> 98関連の資料なら <br> スーパーテクニック、テクニカルデータブック、GDCテクニカルブック、プログラマーズバイブル <br> あたりが転がってる。 <br> ほしけりゃ捨てメアド書いておいてくれ。 <br>  <>
ひげぽん<><>02/06/20 00:35<> <a href="../test/read.cgi/tech/1024411711/71" target="_blank">&gt;&gt;71</a> <br> なるほど、確かに時間は無いですな。 <br> 会社でこっそりやろうかな。 <br> うちも9821があまってる。すごい重いノートだよ。 <>
デフォルトの名無しさん<>sage<>02/06/20 00:47<> ひげぽんぽんは今までどんなもん作ってきた？ <>
ひげぽん<><>02/06/20 00:56<> N88ベーシックから始まり <br> C,C++,java,perl, ruby をかじりつつ <br> 今はSEやってます。SEって言ってもほとんどPGですが、 <br> うーん何を作ってきたかといわれると困る <br> 仕事では、CでCGI書いたり、シェル書いたり･･･ <br>  <br> javaだとftpクライアントもどきとか･･･ <br> オセロとかも作ったなあ。 <>
デフォルトの名無しさん<>sage<>02/06/20 00:57<> <a href="../test/read.cgi/tech/1024411711/72" target="_blank">&gt;&gt;72</a> <br> 98は意外とオンラインで資料が手に入ったりするからパスかな。 <br> それほど凝った入れ込み方は今更しないだろうし。 <br> ATコンパチの方が欲しいけど、ないんだよなぁ。 <>
デフォルトの名無しさん<><>02/06/20 15:28<> http://homepage2.nifty.com/nowsmart/nwsos.htm <>
デフォルトの名無しさん<>sage<>02/06/20 16:13<> &gt;77 <br> へぇ、大したもんだね。 <br> でも魅力的じゃないし、エンドユーザー向けでもない。 <br> 組み込みＯＳに近い感じ。 <br> でもそれだったらQNX(http://www.qnx.co.jp)とかあるし。 <>
ひげぽん<><>02/06/20 20:50<> <a href="../test/read.cgi/tech/1024411711/77" target="_blank">&gt;&gt;77</a> <br> thanks!! <br>  <>
ひげぽん<><>02/06/20 20:57<> 昨日から少しずつアセンブラの勉強の準備を始めました。 <br> 「はじめて読む４８６」は見つかりませんでした。 <br> 週末に大きい本屋に行ってきます。 <br>  <br> 識者の方に質問なのですが、 <br> OSを作るうえで、アセンブラでしか書けない部分というのは、 <br> 以下の2つの観点からはどのような感じなのでしょうか。 <br> ・OS全体に占めるコードの量の割合 <br> ・OS全体の機能の中で占める、重要さ <br>  <br>  <>
デフォルトの名無しさん<>sage<>02/06/20 21:03<> まず気にする部分はブートローダーだけ。 <br> 百〜千行程度。 <br> ドライバとかはそれこそデバイスによって様々なので、定量化できない。 <>
ひげぽん<><>02/06/20 21:06<> <a href="../test/read.cgi/tech/1024411711/81" target="_blank">&gt;&gt;81</a> <br> なるほど。 <br> ブートローダーの部分ですが、これって一から書くのでしょうか。 <br> ある程度は、既存のものを参考にすればよいのでしょうか？ <br> ブート後の処理も良く分かってないなあ。 <br>  <br> どなたか参考URLを教えてください。 <>
デフォルトの名無しさん<>sage<>02/06/20 21:11<> <a href="../test/read.cgi/tech/1024411711/80" target="_blank">&gt;&gt;80</a> <br> 識者じゃないが、 <br> 一般的に言って、ハードウェアを直接弄る部分は <br> アセンブラで書かないといけない。これには他の手段はない。 <br> ハードを制御できなければ使い道がないから最重要部分であるのは間違いない。 <br> ただ、その分量はどういう構成にするかによって随分と変わってくる。 <br> これも大雑把な例示をすれば、 <br>  <br> アプリケーション→ドライバ→ＯＳ→ハードウェア <br>  <br> という風に、ドライバの代わりにＯＳが <br> ハードウェアへの直接アクセスを常に代行するのなら <br> ＯＳにハードウェアの基本操作ライブラリを入れればいいので量は減る。 <br> しかしオーバーヘッドが入るので速度は遅くなる。 <br>  <br> アプリケーション→ドライバ→ハードウェア <br>  <br> こんな具合にドライバが直接ハードウェアを操作するのなら <br> オーバーヘッドは減るが、コードが分散するので量も増える。 <br> また、このような形だと全体制御、エラー処理などの問題も出てくる。 <br> どちらがいいかは状況による。 <>
デフォルトの名無しさん<>sage<>02/06/20 21:16<> ブートローダ、デバドラ、メモリマネージャ、スケジューラ、あたりはアセンブラだな。 <>
デフォルトの名無しさん<>sage<>02/06/20 21:19<> マイクロカーネルで作るんでしょ？ <br> ハードウェアもioサービス等を通して高級言語からいじるべき。 <br>  <>
77<><>02/06/20 21:25<> NOWSMART OS は、実際に売れるかどうかは不明。 <br>  <br> しかし、日本では珍しく、DOS 系と相性がよい OS だし、 <br> 最近のマスコミによる、日本のソフト技術者のレベル軽視 <br> に対する良い反例になってるんじゃないかな。 <>
ひげぽん<><>02/06/20 21:55<> <a href="../test/read.cgi/tech/1024411711/83" target="_blank">&gt;&gt;83</a> <br> <a href="../test/read.cgi/tech/1024411711/85" target="_blank">&gt;&gt;85</a> <br> なるほど。 <br> ところで既存の代表的なOSは <br> アプリケーション→ドライバ→ＯＳ→ハードウェア <br> アプリケーション→ドライバ→ハードウェア  <br> のどちらを採用しているのでしょうか。 <br>  <br> OSを作ろうとした場合、 <br> もちろん最初の設計が一番大事だとは思うのですが、 <br> まずは、動くものを作りたいというのが人情じゃないですか。 <br> その際の第一の壁がブート部分かと・・・・ <br>  <br> でもやると決めたらやるしかないですよね。 <br> マシンをお釈迦にしたくないのでvmware上で実験できれば良いのですが <br> どうなんでしょう。 <br>  <br>  <>
デフォルトの名無しさん<><>02/06/20 22:22<> オライリーの詳説linuxカーネル読んだ人いる？ <br> 誰か感想きぼんぬ。 <>
デフォルトの名無しさん<>sage<>02/06/20 22:27<> アプリケーション-&gt;サービス-&gt;ドライバ(-&gt;OS-&gt;IOサービス)-&gt;ハード <>
ひげぽん <><>02/06/20 22:31<> <a href="../test/read.cgi/tech/1024411711/89" target="_blank">&gt;&gt;89</a> <br> ではOS製作者は、OS,IOサービス,ドライバーを <br> 実装すればよいのでしょうか。 <>
デフォルトの名無しさん<>sage<>02/06/20 22:33<> マジで初心者なんだけど、Cとかで書いた場合、コンパイラはどんなの使うの？ <>
デフォルトの名無しさん<>sage<>02/06/20 22:33<> <a href="../test/read.cgi/tech/1024411711/87" target="_blank">&gt;&gt;87</a> <br> &gt; アプリケーション→ドライバ→ＯＳ→ハードウェア  <br> &gt; アプリケーション→ドライバ→ハードウェア  <br> &gt; のどちらを採用しているのでしょうか。  <br>  <br> アプリケーション → ＯＳ → ドライバ → ハードウェア <br>  <br> だと思うが。 <br>  <br> &gt; その際の第一の壁がブート部分かと・・・・  <br>  <br> 今出てるインターフェース誌を買って読むべし。結構詳しく載っている。 <>
デフォルトの名無しさん<>sage<>02/06/20 22:36<> <a href="../test/read.cgi/tech/1024411711/91" target="_blank">&gt;&gt;91</a> <br> コンパイラは普通の奴。ヘッダファイル/ライブラリが違う。 <>
ひげぽん<><>02/06/20 22:40<> <a href="../test/read.cgi/tech/1024411711/91" target="_blank">&gt;&gt;91</a> <br> あ、それ私も知りたい。 <br> まずは環境構築ですよね。 <br>  <>
デフォルトの名無しさん<>sage<>02/06/20 22:44<> 一番大事なのはリンカ。 <br> 自分のOSに合ったバイナリイメージを作らないといけない。 <br> それから、通常は提供されている標準C/C++ライブラリは使用できない。 <br>  <br> &gt;アプリケーション → ＯＳ → ドライバ → ハードウェア <br> この形式だと、機能追加=OS（カーネル）の再構築だったりするから、 <br> サービスを挟むべき。 <br>  <br> それから、ドライバもユーザーモードドライバはOSやIOサービスを経由してハードをいじる <br> カーネルモードドライバだけが直接ハードウェアをさわれるようにするべき。 <>
デフォルトの名無しさん<>sage<>02/06/20 22:51<> とりあえず立ち読みでもいいから目をとおすべき。 <br>  <br> 「Lion's Commentary on UNIX」アスキー <br>  <br> x86なら&gt;51の言ってたタネンバウム先生の <br>  <br> 「オペレーティングシステム」 <br>  <br> どちらもコンパクトなコードが載ってるので即役立つはず。 <>
92<>sage<>02/06/20 22:53<> <a href="../test/read.cgi/tech/1024411711/95" target="_blank">&gt;&gt;95</a> <br> 言いたいことはわかるが、ここのレベル考えて書いてる ? <br> ドライバのダイナミックロードやユーザーモードドライバなんて言うのは <br> 一応ＯＳができてからでもいいと思うぞ。 <>
デフォルトの名無しさん<>sage<>02/06/20 22:59<> レベルのことを言うんならJava方式だと思うが。 <>
デフォルトの名無しさん<><>02/06/20 23:23<> ここってネタスレ？すげー笑えるんだけど。 <>
デフォルトの名無しさん<>sage<>02/06/20 23:26<> DX8SDKどこでダウソ？  <>
ひげぽん<><>02/06/20 23:39<> <a href="../test/read.cgi/tech/1024411711/98" target="_blank">&gt;&gt;98</a>,99 <br> うう。レベルが低いのは認めますが、 <br> ここは出発点ということで徐々にレベルアップします。 <br> 少なくともやる気はある。 <br>  <>
デフォルトの名無しさん<>sage<>02/06/20 23:41<> 十五歳の誕生日にオペレーティングシステム 第２版買ってもらうことにしました。 <>
デフォルトの名無しさん<>sage<>02/06/20 23:45<> <a href="../test/read.cgi/tech/1024411711/100" target="_blank">&gt;&gt;100</a> <br> スレ違い ＆ マルチウザイ。 <>
デフォルトの名無しさん<>sage<>02/06/20 23:46<> <a href="../test/read.cgi/tech/1024411711/99" target="_blank">&gt;&gt;99</a> <br> 99%ネタスレです。 <>
ひげぽん<><>02/06/20 23:47<> <a href="../test/read.cgi/tech/1024411711/102" target="_blank">&gt;&gt;102</a> <br> もし本当に15才ならぜひ、将来良いOSを作ってください。 <br> うーん若いですね <>
デフォルトの名無しさん<>sage<>02/06/20 23:48<> 99=104 <br> 暇人 <>
デフォルトの名無しさん<>sage<>02/06/20 23:51<> <a href="../test/read.cgi/tech/1024411711/101" target="_blank">&gt;&gt;101</a> <br> <a href="../test/read.cgi/tech/1024411711/106" target="_blank">&gt;&gt;106</a> の言う通り、 <a href="../test/read.cgi/tech/1024411711/99" target="_blank">&gt;&gt;99</a>=<a href="../test/read.cgi/tech/1024411711/104" target="_blank">&gt;&gt;104</a> はかまって君だから、無視しとけば <br> いいよ。 <>
デフォルトの名無しさん<>sage<>02/06/20 23:51<> <a href="../test/read.cgi/tech/1024411711/106" target="_blank">&gt;&gt;106</a> <br> オマエモナ。ヒッキー <>
デフォルトの名無しさん<>sage<>02/06/20 23:54<> スレのレベルが高ければ誰も荒らしたりしないよ <br> アホがageるから荒らされる <>
ひげぽん <><>02/06/21 00:00<> <a href="../test/read.cgi/tech/1024411711/88" target="_blank">&gt;&gt;88</a> <br> さっき本屋で立ち読みしてきました。 <br> OSを作ろうとするといろいろな事を考えなければいけないこと <br> があると痛感しました。 <br>  <br> アセンブラの環境はnasmにしようかと思うのですが、 <br> 他にお勧めのものありますか。 <br>  <br>  <>
デフォルトの名無しさん<>sage<>02/06/21 00:01<> いや、nasmがベストかと。 <br> まぁ、漏れはTASM5.0とかでも良いと思うが <>
デフォルトの名無しさん<>sage<>02/06/21 00:01<> ほんと、低級PGってどこにでもいるんだね（笑 <>
デフォルトの名無しさん<>sage<>02/06/21 00:01<> <a href="../test/read.cgi/tech/1024411711/109" target="_blank">&gt;&gt;109</a> <br> &gt; スレのレベルが高ければ誰も荒らしたりしないよ  <br> 関係ない。どんなレベルのスレでも荒らされる時は荒らされる。 <br> とにかく、「荒らし」には無視しかない。匿名掲示板の宿命だよ。 <>
デフォルトの名無しさん<>sage<>02/06/21 00:07<> <a href="../test/read.cgi/tech/1024411711/112" target="_blank">&gt;&gt;112</a> <br> 自分のことだろ <br> プログラムすら出来ないんでしょ。 <>
デフォルトの名無しさん<>sage<>02/06/21 00:11<> <a href="../test/read.cgi/tech/1024411711/114" target="_blank">&gt;&gt;114</a> == <a href="../test/read.cgi/tech/1024411711/99" target="_blank">&gt;&gt;99</a> <br> ですか？必死だな（ﾜﾗ <>
ひげぽん <><>02/06/21 00:11<> <a href="../test/read.cgi/tech/1024411711/111" target="_blank">&gt;&gt;111</a> <br> ありがとう。 <br> さあて、nasmのドキュメントを読むか(英語) <>
デフォルトの名無しさん<>sage<>02/06/21 00:14<> コンパイラにgccを採用するならnasmじゃなくてgasにした方が親和性高いかもしれない。 <br> インラインアセンブラでnasm使用できないでしょ？ <>
デフォルトの名無しさん<>sage<>02/06/21 00:15<> <a href="../test/read.cgi/tech/1024411711/113" target="_blank">&gt;&gt;113</a> <br> なぜ荒らされるのかを認識しようとしないのは、思考停止してるだけ。 <br> だから荒らされるんだよ。 <>
デフォルトの名無しさん<>sage<>02/06/21 00:18<> もう荒らしの話は終わりに汁 <>
ひげぽん<><>02/06/21 00:20<> <a href="../test/read.cgi/tech/1024411711/117" target="_blank">&gt;&gt;117</a> <br> 実は開発環境をlinuxと、WindowsXP proどちらにしようか迷っております。 <br> linuxマシンはスペックが低いのでOS実験機(オシャカになってもいい) <br> そうすると、gasは無理かもしれないです。 <br> でもかなりの利点があるならメインマシンをlinux&XP のデュアルブートにしようかな。 <br>  <>
デフォルトの名無しさん<><>02/06/21 00:21<> OS板行けばと思ったのは俺だけかな？ <>
デフォルトの名無しさん<>sage<>02/06/21 00:22<> 開発マシンは関係なくて、採用するコンパイラが問題。 <>
デフォルトの名無しさん<>sage<>02/06/21 00:24<> コンパイラなんぞ自分で書けばいい。 <br> ハードの資料と時間と根気が最大の問題。 <>
ひげぽん<><>02/06/21 00:27<> <a href="../test/read.cgi/tech/1024411711/122" target="_blank">&gt;&gt;122</a> <br> <a href="../test/read.cgi/tech/1024411711/123" target="_blank">&gt;&gt;123</a> <br> すいません、話についていけてません。 <br> gccって、unix系用のコンパイラじゃないんですか？ <br> もちろんここではcygwinは考えないとしての場合ですが。 <>
デフォルトの名無しさん<><>02/06/21 00:28<> <a href="../test/read.cgi/tech/1024411711/123" target="_blank">&gt;&gt;123</a> <br> 実用レベルのコンパイラが簡単に書けるわけねーだろ！ <br> ゴルァ！ <>
デフォルトの名無しさん<>sage<>02/06/21 00:30<> <a href="../test/read.cgi/tech/1024411711/121" target="_blank">&gt;&gt;121</a> <br> OSを作るためにみんなでお勉強スレッド <br> http://pc.2ch.net/test/read.cgi/os/1020424840/ <br>  <br> これが参考になりそうだ <>
デフォルトの名無しさん<>sage<>02/06/21 00:30<> <a href="../test/read.cgi/tech/1024411711/125" target="_blank">&gt;&gt;125</a> <br> てめーの実業務用の実用コンパイラなら幾つも書いてきてますが何か？ <>
デフォルトの名無しさん<>sage<>02/06/21 00:30<> コンパイラを作るスレになりますた <>
デフォルトの名無しさん<>sage<>02/06/21 00:32<> <a href="../test/read.cgi/tech/1024411711/127" target="_blank">&gt;&gt;127</a>  <br>  自慢するなよ。（ｗ <>
デフォルトの名無しさん<>sage<>02/06/21 00:33<> <a href="../test/read.cgi/tech/1024411711/127" target="_blank">&gt;&gt;127</a> <br> ハイハイ、わかったわかった。一生そう言っててくれ。 <>
デフォルトの名無しさん<>sage<>02/06/21 00:35<> 文法を適度に制限してyacc or 再帰下降で書けば簡単だろうに。 <br> こんなもん自慢になるかっつーの。 <br> そんなことよりハードの資料。 <br> BIOS叩くにしてもそこそこのもんが必要だろ？ <>
125<>sage<>02/06/21 00:35<> <a href="../test/read.cgi/tech/1024411711/127" target="_blank">&gt;&gt;127</a> <br> ん？俺はひきこもりだぞﾓﾙｧ！ <>
ひげぽん<><>02/06/21 00:36<> <a href="../test/read.cgi/tech/1024411711/126" target="_blank">&gt;&gt;126</a> <br> 使える！！！ <br> 今の私には最高のスレッド <>
デフォルトの名無しさん<>sage<>02/06/21 00:37<> <a href="../test/read.cgi/tech/1024411711/124" target="_blank">&gt;&gt;124</a> <br> 別にUNIX用ってわけじゃないが。 <br> つーか、こんなレベルでOS書けるんかいな？ <>
デフォルトの名無しさん<><>02/06/21 00:42<> 問題はひげぽんが死ぬまでに形になるかだな・・・ <>
デフォルトの名無しさん<>sage<>02/06/21 00:43<> (笑 <>
デフォルトの名無しさん<>sage<>02/06/21 00:47<> &gt;134 <br> Onani-System なら書けるかも <>
デフォルトの名無しさん<>sage<>02/06/21 00:47<> <a href="../test/read.cgi/tech/1024411711/131" target="_blank">&gt;&gt;131</a> <br> &gt; 文法を適度に制限してyacc or 再帰下降で書けば簡単だろうに。 <br> 「実用レベル」と言う言葉が見えないのか ? それとも、一般人と定義が違うの <br> か ? いずれにせよ、スレ違いだからどっか逝ってくれ。 <>
デフォルトの名無しさん<>sage<>02/06/21 00:49<> <a href="../test/read.cgi/tech/1024411711/138" target="_blank">&gt;&gt;138</a> <br> 待て待て。喧嘩を売ったのは125。俺は「お前はバカか」と言っただけ。 <br> 実用レベル云々は色々と反論したくもあるがここでやるつもりはねぇよ。 <>
ひげぽん<><>02/06/21 00:53<> 一応5年計画です。 <br> さすがに死ぬまではやらないかと（冗談を真に受けてる) <>
デフォルトの名無しさん<>sage<>02/06/21 00:57<> とにかくもっとアセンブラやハードウェアについて勉強した方がいいね。 <br> 今の知識だと、着手してからがとても大変だと思うよ。 <br> 昔は、アセンブラの初歩として「はじめて読む８０８６」をよく薦められた。 <br> もしどこかで手に入るのなら読んでみるといいかも。 <>
デフォルトの名無しさん<><>02/06/21 01:00<> <a href="../test/read.cgi/tech/1024411711/141" target="_blank">&gt;&gt;141</a> <br> オレモテルヨ！ <br> はかにも「初めて読むアセンブラ」もZ80を理解するのによかたよ <>
ひげぽん<><>02/06/21 01:00<> <a href="../test/read.cgi/tech/1024411711/141" target="_blank">&gt;&gt;141</a> <br> 確かにハードウェアの専門知識は皆無です。 <br> PC自作したり、RS232CにLEDつないで遊んだ知識は一切役立たず・・・ <br> 週末は本探しからはじめます。 <br>  <>
デフォルトの名無しさん<>sage<>02/06/21 01:02<> <a href="../test/read.cgi/tech/1024411711/139" target="_blank">&gt;&gt;139</a> <br> <a href="../test/read.cgi/tech/1024411711/123" target="_blank">&gt;&gt;123</a> 付近の話の流れで、唐突に「コンパイラなんぞ自分で書けばいい。」と <br> 言う発言はいかがなものかと。突っ込まれてもしょうがないと思うぞ。 <>
デフォルトの名無しさん<>sage<>02/06/21 01:04<> アセンブラもろくに知らんとＯＳ書くやつがいるんか <br> いやＢＡＳＩＣでＯＳだっつやつもいるが… <br> こんなんではブートしてもプロテクトモードにはいるときにBIOS叩きで氏ぬのがオチ <>
デフォルトの名無しさん<>sage<>02/06/21 01:05<> <a href="../test/read.cgi/tech/1024411711/145" target="_blank">&gt;&gt;145</a>  <br>  これから勉強すれば良いんじゃん。  <br>  何を言ってるんだか・・・ <>
145<>sage<>02/06/21 01:06<> せいぜいがんばれよ <>
ひげぽん<><>02/06/21 01:07<> <a href="../test/read.cgi/tech/1024411711/145" target="_blank">&gt;&gt;145</a> <br> OSを作りたいと思う。 <br> →アセンブラが必要と分かる <br> →アセンブラ勉強する <br> →CPU等ハードウェアの知識が必要と分かる <br> →勉強する <br> →ちょっと作ってみる <br> →失敗！！ <br> でもその過程が楽しい（少なくとも私は)のでよし！！！！ <>
デフォルトの名無しさん<>sage<>02/06/21 01:07<> <a href="../test/read.cgi/tech/1024411711/144" target="_blank">&gt;&gt;144</a> <br> あー、それは済まなかった。申し訳ない。 <>
125<>sage<>02/06/21 01:12<> (´-`).｡ｏＯ(ひょっとして俺に責任があるのか？) <>
デフォルトの名無しさん<>sage<>02/06/21 01:20<> コンパイラ云々もたしかに大変だけどそれ以上にc言語で書くなら、 <br> それのライブラリを作るほうが大変という罠。 <>
デフォルトの名無しさん<>sage<>02/06/21 01:20<> 割り込みとメモリ管理、タスクディスパッチのハザマで死ぬであろう。 <br>  <>
デフォルトの名無しさん<>sage<>02/06/21 01:22<> <a href="../test/read.cgi/tech/1024411711/152" target="_blank">&gt;&gt;152</a> <br> それを思うとやっぱりgccしか選択しないなと思う。 <>
デフォルトの名無しさん<>sage<>02/06/21 01:41<> GPLかぁ。。。 <>
デフォルトの名無しさん<><>02/06/21 01:57<> いまどきデバイスドライバがアセンブラってのはどんなOSだよ <br> vxdのヘッダだけとかじゃねーの？ <br>  <br> 初期化（ブートローダ） <br> 仮想メモリ <br> 割り込みハンドラ <br> ロック機構 <br>  <br> くらいじゃねーの？ <br>  <>
デフォルトの名無しさん<>sage<>02/06/21 02:11<> デバイスドライバって言ってもOSのカーネルモード通すんだったら <br> アセンブラで書かなくてもいいよな。 <br> 本当にアセンブラで書かなくてはいけないのは、むしろBIOSだな。 <>
デフォルトの名無しさん<>sage<>02/06/21 02:12<> gccで生成したコードはGPLじゃないよ。 <br> glibcを使わなければいい（どうせ使えない） <>
デフォルトの名無しさん<>sage<>02/06/21 02:33<> <a href="../test/read.cgi/tech/1024411711/157" target="_blank">&gt;&gt;157</a> <br> そうなんだ。それはいいこときた。 <>
デフォルトの名無しさん<><>02/06/21 02:51<> 本気でやる気があるのなら、手短に <br> 最初に作るのはローダーといいたいところだけど、もっと簡単に <br> ハードディスクからブートして画面にメッセージでもだすプログラム作るといいよ。 <br> そのあと、割り込みとメモリ管理をするといいです。 <br> それもいきなりハードディスクを使ったページングとかはせず、 <br> 単純に仮想アドレスを実アドレスにマップするのを作ってみるといいです。 <br> そうこうしているうちに、手探りの作り方ってのが分かってくるから、 <br> そしたら、OSの理論本でも見て設計するといいです。 <br> 最初はCを使おうとか考えたらダメですよ、オールアセンブラです。 <br> やり方がわかってきたら、全部アセンブラで書くのが面倒になってきますから <br> そしたら C で書いてみるといいです。 <br> 実のところここまでできれば後はたいしたことは無いです、思いのまま設計するよろしいです。 <br>  <>
デフォルトの名無しさん<>sage<>02/06/21 03:02<> <a href="../test/read.cgi/tech/1024411711/159" target="_blank">&gt;&gt;159</a> <br> HDDはパラメータ周りとか結構めんどくさいんで、 <br> 実際に画面が出て動くまでをフロッピーでやることを勧めたいんですが。 <>
デフォルトの名無しさん<><>02/06/21 03:07<> ああ、確かにそうですね。 <br> 後86特有のあの変なモードとかセグメントとかも先になれてから <br> メモリ管理がいいかも知れません。 <br>  <br> しかし、86ッテヤダネェ <>
デフォルトの名無しさん<>sage<>02/06/21 03:13<> ポインタさえ殺せば仮想メモリ管理いらんやろ。 <br> 仮想マシンの線で言った方が楽やと思うで。 <br> 最近はなんやJavaや.NETやゆーて流行ってるみたいやし。 <>
デフォルトの名無しさん<>sage<>02/06/21 03:17<> <a href="../test/read.cgi/tech/1024411711/162" target="_blank">&gt;&gt;162</a> <br> ドシロートはすっこんでろ <>
デフォルトの名無しさん<>sage<>02/06/21 03:19<> いっそ、最初はP/ECEで試作した方がいいかも。 <br> ハードウェアは単純で、カーネルソースも公開されているし、CPUは <br> RISC物なので、x86のセグメントみたいな嫌らしさもない。 <>
デフォルトの名無しさん<>sage<>02/06/21 03:23<> <a href="../test/read.cgi/tech/1024411711/164" target="_blank">&gt;&gt;164</a> <br> んでもエプソンのチップってイヤになるほどマイナーじゃない？ <br> WonderWitchをさわった方がx86系だし良いんじゃないかな。 <>
デフォルトの名無しさん<>sage<>02/06/21 03:23<> <a href="../test/read.cgi/tech/1024411711/163" target="_blank">&gt;&gt;163</a> <br> そらOSは作ったことはないけどやな。 <br> たとえばJavaVMやったら <br> 任意アドレス指定が可能なオペレーションは排除されとったと記憶しとる。 <br> 各種の変数は事前に囲い込まれた範囲内でしかアクセスでけへんし <br> オブジェクト境界を超えるアクセスは全部VM上でチェックが入る。 <br> あれやったら、仮想メモリ管理、ちゅうか、アドレス空間の隔離はせんでも <br> 安全に動くもんが実装できるんとちゃうんか？ <br> ページングの話はまた別な。 <br> これも習作のOSとして大目に見るんやったら <br> 仮想メモリ管理なしで類似品が作れると思うで。 <br> どっか間違うてるか？ <>
デフォルトの名無しさん<>sage<>02/06/21 03:26<> <a href="../test/read.cgi/tech/1024411711/162" target="_blank">&gt;&gt;162</a> <br> 本質的にVMはOSが発行するメッセージ、割り当てたメモリ,I/Oに対して <br> アクセスするのでそれ単体では何もでん。 <br> JAVAチップもしかり。 <br>  <br>  <br>  <>
デフォルトの名無しさん<>sage<>02/06/21 03:31<> <a href="../test/read.cgi/tech/1024411711/167" target="_blank">&gt;&gt;167</a> <br> VMがCPUそのもんやと思てると？そこまでアホなこと言うかいな。 <br> JavaVMみたいに、あらゆるアクセスが検査対象となる構造やったら、 <br> 実行時に動的にアクセスを制限するようなことをせんでも、 <br> JITなりを通す段階で安全な処理に落とし込めるやろっちゅう話やがな。 <br> x86のプロテクトモードやGDTやらLDTやらゲートやら面倒くさそうやからな。 <br> そんなん弄るぐらいやったら実行バイナリを仮想コードで統一しつつ <br> 裏ではJITなんかで調整して基本的な命令しか使わんような <br> 単純な構造にした方がええんちゃうか言うてんねん。 <br> これやったらI/O命令と割り込みぐらいでどうにかなるはずや。 <br> それともこういうことはできへんのんか？ <>
デフォルトの名無しさん<>sage<>02/06/21 03:31<> <a href="../test/read.cgi/tech/1024411711/166" target="_blank">&gt;&gt;166</a> <br> <a href="../test/read.cgi/tech/1024411711/1" target="_blank">&gt;&gt;1</a>が作りたい物を作るのが一番なんだから、 <br> 横から口を挟むのはどうかと。 <br>  <>
デフォルトの名無しさん<><>02/06/21 03:31<> <a href="../test/read.cgi/tech/1024411711/165" target="_blank">&gt;&gt;165</a> <br> 手始めにWonderWitchはいいかも、簡単に手に入って <br> しかも86系アセンブラになれるのにももってこいですね。 <br> あれって確か発売元バンダイでしたっけ？ <>
デフォルトの名無しさん<>sage<>02/06/21 03:32<> <a href="../test/read.cgi/tech/1024411711/169" target="_blank">&gt;&gt;169</a> <br> こっちの方が楽ちゃうかぁ、思うてな。 <br> 参考程度に聞いたって。&gt;1 <>
デフォルトの名無しさん<>sage<>02/06/21 03:33<> (´-`).｡ｏＯ(ﾜﾝﾀﾞｰｳｨｯﾁ････まだあったのか。) <>
デフォルトの名無しさん<><>02/06/21 03:35<> <a href="../test/read.cgi/tech/1024411711/172" target="_blank">&gt;&gt;172</a> <br> えっひょっとしてﾜﾝﾀﾞｰｳｨｯﾁ････もう売ってない？ <br>  <>
デフォルトの名無しさん<>sage<>02/06/21 03:37<> WonderWitch、まだ売ってるよ。 <br> x86のアセンブラに慣れるには、確かにいいかもしれない。 <>
デフォルトの名無しさん<>sage<>02/06/21 03:42<> WWが終わった後も386の壁486の壁が待ってるからな。 <>
デフォルトの名無しさん<>sage<>02/06/21 03:46<> <a href="../test/read.cgi/tech/1024411711/175" target="_blank">&gt;&gt;175</a> <br> 壁は286,386だけでしょ、後は大体みんないっしょ <>
デフォルトの名無しさん<>sage<>02/06/21 03:59<> &gt;1 <br> はまず標準入出力関数を作ってモニタプログラムを <br> 書かなければいけないだろう。 <br> それから記憶装置からブートだな。 <br> そして最後にタスク、メモリ管理と。 <>
デフォルトの名無しさん<><>02/06/21 13:03<> ｶﾞﾀｶﾞﾀ言わずに月刊InterFace７月号買えよ <>
ひげぽん<><>02/06/21 21:04<> <a href="../test/read.cgi/tech/1024411711/159" target="_blank">&gt;&gt;159</a> <br> <a href="../test/read.cgi/tech/1024411711/160" target="_blank">&gt;&gt;160</a> <br> まずは、フロッピーからブートというのはちょっと考えてました。 <br> ブートに関しては、ここ↓ <br> http://www.tkcity.net/~nobusan/boot/boot.html <br> で勉強しています。 <br>  <br>  <br> <a href="../test/read.cgi/tech/1024411711/178" target="_blank">&gt;&gt;178</a> <br> 買いましたよ。今読んでおります。 <br>  <br> ところで環境構築なんですが <br> Cのライブラリ等は何を使えばよいのでしょうか。 <br> linux,windowsどちらでも良いので教えてください。 <>
デフォルトの名無しさん<>sage<>02/06/21 21:06<> <a href="../test/read.cgi/tech/1024411711/179" target="_blank">&gt;&gt;179</a> <br> 安全なのは自分で作ることだな。 <>
デフォルトの名無しさん<>sage<>02/06/21 21:08<> <a href="../test/read.cgi/tech/1024411711/179" target="_blank">&gt;&gt;179</a> <br> &gt; Cのライブラリ等は何を使えばよいのでしょうか。  <br> Interface ７月号買ってんだったら P.55 から読んでみたらどうよ。 <>
ひげぽん<><>02/06/21 21:25<> <a href="../test/read.cgi/tech/1024411711/181" target="_blank">&gt;&gt;181</a> <br> gnuということですか？ <>
デフォルトの名無しさん<><>02/06/21 22:07<> <a href="../test/read.cgi/tech/1024411711/182" target="_blank">&gt;&gt;182</a> <br> ぉぃぉぃ <>
181<>sage<>02/06/21 22:19<> <a href="../test/read.cgi/tech/1024411711/182" target="_blank">&gt;&gt;182</a> <br> P.55 に書いてある Chapter1 のタイトルをここに書いてみろよ。 <br> あんた以外は、俺が何を言いたいかわかるはずだ。 <br> (で、どうすればいいかは Interface を見ればわかる。Linux の環境が <br> あるんなら、まずは書いてある通りやってみればいい。知ってる人には <br> ちょっと冗長だけど、今までこの手のプログラムを書いたことない人には <br> なかなかいい記事だと思うよ。) <>
デフォルトの名無しさん<><>02/06/22 17:57<> ﾓｳｵﾜﾘ? <>
デフォルトの名無しさん<>sage<>02/06/22 19:27<> ｳﾝ､ｵﾜﾘ｡ <>
181<>sage<>02/06/22 21:41<> おわりかよ !! <>
ひげぽん<>sage<>02/06/22 22:08<> え？おわりですか？ <>
デフォルトの名無しさん<>sage<>02/06/23 03:06<> <a href="../test/read.cgi/tech/1024411711/188" target="_blank">&gt;&gt;188</a> <br> おまえが決めることだろ。 <br> あれだけのペースで書き込んでいたのに、 <br> 書き込みがぷっつり途絶えたと言うことは、 <br> 逃げたと解釈するしか無かったからな。 <br>  <br> もし本人ならトリップつけろ <>
ひげぽん<>sage<>02/06/23 11:04<> http://pc.2ch.net/test/read.cgi/os/996204956/l50 <br> を参考にして <br>  <br>  <br> 「オペレーティングシステム＜第二版＞ 設計と理論およびMINIXによる実装」 <br> 著：A.S.タネンバウム ＋ A.S.ウッドハル <br> 訳：千輝 順子 <br> 監修：今泉 貴史 <br> プレンティスホール出版 ￥8,800 <br> を読もうかと思っています。 <br>  <br> <a href="../test/read.cgi/tech/1024411711/188" target="_blank">&gt;&gt;188</a> <br> は、私ではありません。 <br>  <br> インターフェース誌まだ読んでいる途中です。 <br> ところで上誌P55から「標準Cライブラリを使わないプログラミング」 <br> がありますが、 <br> ライブラリを使わない場合、自分でシステムコール系を <br> アセンブリ言語で書かなければいけないのですが、 <br> <a href="../test/read.cgi/tech/1024411711/151" target="_blank">&gt;&gt;151</a> <br> の言っているようにこの部分を独自のライブラリとして <br> Cへのインターフェースを作成しなければいけないのでしょうか。 <br>  <br> 上記のライブラリは開発環境として誰かが書いたものに <br> ＋α自分で必要なものを書くのでしょうか。 <br>  <br> それとも <br> 全部自作？？ <br>  <>
ひげぽん<>sage<>02/06/23 11:14<> そういえばunixマガジンもブート特集してましたね。 <br>  <br>  <>
デフォルトの名無しさん<>sage<>02/06/23 11:20<> <a href="../test/read.cgi/tech/1024411711/190" target="_blank">&gt;&gt;190</a> <br> 普通1からOSを作るなら全部自作 <br> 既存の物を持ってきても良いとは思うが、まぁ、基礎だと思って作るのがいいんじゃないか。 <br> 一般に提供されているCライブラリはほぼ使えないと思った方が良い。 <br> だからFreeBSDとかLinuxあたりから抜いてくるしか無い・・・かな。 <br> 勿論ライセンス問題もあるんだけど。 <br>  <br> &gt;Cへのインターフェースを作成しなければいけないのでしょうか <br> いけないわけじゃないけど、Cのインターフェイスで作らないと <br> 結局全部アセンブラで書く羽目になるし、どうだろうね。 <br>  <>
デフォルトの名無しさん<><>02/06/23 11:31<> ﾏﾀﾊｼﾞﾏﾀ <>
ひげぽん<><>02/06/23 23:13<> <a href="../test/read.cgi/tech/1024411711/192" target="_blank">&gt;&gt;192</a> <br> なるほど。 <br> システムコール系(全てではありませんが)は <br> アセンブラで書かなければいけないのですね。 <br>  <br> 「オペレーティングシステム＜第二版＞ 設計と理論およびMINIXによる実装」 <br> 買って読んでいます。 <br>  <br> まだ最初の数十ページですが、すでに買ってよかったと思っています。 <br>  <br>  <>
ひげぽん<><>02/06/23 23:18<> 環境構築ですが、インターフェース誌が結構役に立っています。 <br> bochsインストールしようかと思っています。 <br>  <br> インターフェース誌紹介してくれた人ありがとう！！ <br>  <>
デフォルトの名無しさん<><>02/06/23 23:39<> Minix本そんなにいいの？ <>
ひげぽん<><>02/06/23 23:43<> まったくの初心者なので、勉強になるっす。 <br>  <br> まったく同じ仕組みでつくろうとは思いませんが、 <br> プロセス間通信とか、パイプの実装とか･･･ <br> 勉強になりますね。 <>
デフォルトの名無しさん<>sage<>02/06/23 23:45<> ﾀﾈﾝﾊﾞｳﾑ(・∀・)ｲｲ!! <>
ひげぽん<><>02/06/24 00:09<> 良ｽﾚﾊｹｰﾝ <>
</b> ◆mDa3YTQk <b><>sage<>02/06/24 00:17<> キャップをつけます。 <>
デフォルトの名無しさん<>sage<>02/06/24 00:21<> OSの魔法使い <>
デフォルトの名無しさん<>sage<>02/06/24 00:49<> 2002 06/18 <br> その日、2ちゃんねるの漢たちが立ち上がった・・・。 <br> 最高のOSを作るべく。 <br>  <br>  <br> できあがたときのことを考えて宣伝に使うフレーズはこんなんでいいか <>
デフォルトの名無しさん<>sage<>02/06/24 00:59<> 開発コード：　ひげぽん６１８　とか <>
デフォルトの名無しさん<><>02/06/24 10:31<> ＯＳ作りたいんだったら、理系の大学へ進学して <br> ＮＥＣ・富士通・日立のいずれかの該当部署から内定もらうのが手っ取り早いと思われ。 <>
デフォルトの名無しさん<>sage<>02/06/24 11:35<> <a href="../test/read.cgi/tech/1024411711/204" target="_blank">&gt;&gt;204</a> <br> 趣味でそこまでできません。 <>
155<>sage<>02/06/24 15:42<> ブートローダはOSの本質的な仕事じゃないな。  <br>  grubとかliloとかsyslinuxとかnetbootとかredbootとかmiloとかROMモニタとか  <br>  「メモリの特定アドレスにkernel imageをロードする機能」  <br>  と  <br>  「そっから動くカーネル」  <br>  は別もんだ。 <>
デフォルトの名無しさん<><>02/06/24 18:24<> 開発コード：ひげぽん0721 <>
デフォルトの名無しさん<>sage<>02/06/24 18:34<> <a href="../test/read.cgi/tech/1024411711/204" target="_blank">&gt;&gt;204</a> <br> ダメだろ。そう言うところは、自分で OS を１から作ってるわけじゃないからね。 <br> 悪く言うと既存の OS を自社のマシンにポーティングしてるだけだよ。 <br> そんなことするぐらいなら、英語の勉強して Linux とか FreeBSD とかのコミュ <br> ニティに参加した方がいいよ。 <br>  <br> <a href="../test/read.cgi/tech/1024411711/206" target="_blank">&gt;&gt;206</a> <br> だからなに ? <>
ネギトロ<><>02/06/24 20:26<> <a href="../test/read.cgi/tech/1024411711/206" target="_blank">&gt;&gt;206</a> <br> だけど、そこがないと話になんないよな。 <br> PC/AT互換機のROM-BIOSの機能とか、どこかで調べられないか？ <br> 俺もちーと興味ある。 <br>  <br> んで、このスレッドには興味持ったのでコテハンで行きます。 <>
デフォルトの名無しさん<>sage<>02/06/24 21:09<> <a href="../test/read.cgi/tech/1024411711/208-209" target="_blank">&gt;&gt;208-209</a> <br> <a href="../test/read.cgi/tech/1024411711/206" target="_blank">&gt;&gt;206</a> は <a href="../test/read.cgi/tech/1024411711/155" target="_blank">&gt;&gt;155</a> の発言で ブートローダをOSの一部のように書いたから <br> それを訂正したってだけだろ。 <br>  <br> 労力を他の部分に傾けるためにブートローダは既存のものを使うのも良し。 <br> 勉強もかねてブートローダからつくるもの良し。 <>
208<>sage<>02/06/24 21:43<> <a href="../test/read.cgi/tech/1024411711/210" target="_blank">&gt;&gt;210</a> <br> 「ああなるほど、そう言うことか。」って、三日も前の話だし、全然本質 <br> 的な話じゃないから正直わかんなかったよ。 <>
ひげぽん<><>02/06/24 23:16<> OSの技術的な話はまだ勉強中です。 <br> ちょっとにぎわってきたのでうれしいです。 <br>  <br> まだ先の話ですが、多少速度に目をつぶっても <br> CPU依存の部分は出来るだけ少なくしたいかなあと思っているんですが <br> どうでしょうか。 <br>  <br> ちょっと昨日夢で見たのです(夢ですよ) <br> システムコール系はアセンブラで書き、インターフェース部分をCで書きます。 <br> そして、JINI経由でjavaから呼び出す。 <br> あーめんどくさいなこれは････ <br> でもなんかばかげてて楽しい。 <br>  <br> 言語はCでは無くC++で書こうかなあ。 <br> そのほうがいろいろ素直にかけそう。 <>
デフォルトの名無しさん<>sage<>02/06/24 23:18<> <a href="../test/read.cgi/tech/1024411711/212" target="_blank">&gt;&gt;212</a> <br> ×JINI <br> ○JNI <br>  <br> Jini を使ったOSというのもそれはそれで面白いけど。 <>
デフォルトの名無しさん<><>02/06/24 23:18<> Javaにこだわるなよ <>
ひげぽん<><>02/06/24 23:19<> <a href="../test/read.cgi/tech/1024411711/213" target="_blank">&gt;&gt;213</a> <br> 訂正ありがとう。 <br> <a href="../test/read.cgi/tech/1024411711/214" target="_blank">&gt;&gt;214</a> <br> うん。あくまでも冗談です。そんな面倒なことはやってられません。 <>
ひげぽん<><>02/06/24 23:32<> <a href="../test/read.cgi/tech/1024411711/209" target="_blank">&gt;&gt;209</a> <br> ネギトロ氏よろしく。 <br> 多少でも興味のある方書き込みしてくれるとうれしいっす。 <br>  <br> セマフォ勉強中・・・ <>
デフォルトの名無しさん<><>02/06/24 23:39<> Javaのyield()ってどうやって実現してるんだろ・・・ <br>  <br> ヒントくださーい <>
デフォルトの名無しさん<>sage<>02/06/24 23:52<> <a href="../test/read.cgi/tech/1024411711/212" target="_blank">&gt;&gt;212</a> <br> 意味不明。 <br> システムコール系って何だ？ <br> 低レベルサービスをアセンブラで書いて、 <br> そのインターフェイスをC互換にすると言うこと？ <>
デフォルトの名無しさん<>sage<>02/06/25 00:02<> <a href="../test/read.cgi/tech/1024411711/218" target="_blank">&gt;&gt;218</a> <br> 俺も良くわからんけど、システムコール呼び出しをアセンブラで書いて、 <br> Ｃ用のインターフェースを作るってことじゃないの ? プロセッサの動作 <br> モードをユーザーモードから切り替えるには割込みしかないから、システ <br> ムコールは (インラインでいいけど) アセンブラ使わざる得ないだろう <br> ね。(ちなみに、ＯＳの受け口もアセンブラで書く必要がある。) <br>  <br> よく考えたら、システムコール呼び出しって変だね。System Call Call <br> だもんなァ...。 <>
デフォルトの名無しさん<><>02/06/25 00:04<> 意　味　が　通　じ　れ　ば　いいんじゃネーノ？ <>
ひげぽん<><>02/06/25 00:07<> <a href="../test/read.cgi/tech/1024411711/218" target="_blank">&gt;&gt;218</a> <br> システムコールをアセンブリ言語で実装し、 <br> Cから呼び出すことが出来る用にインターフェースを用意するという <br> つもりで書いたんだけど。 <br> 日本語が変だったかな。変ですね。ｽﾏｿ <br>  <br> インラインアセンブラとか・・・ <br> インターフェースに書いてあるまんまだったりして････ <>
ひげぽん<><>02/06/25 00:08<> 日本語気をつけます。 <br> 反省･･･ <>
219<>sage<>02/06/25 00:16<> <a href="../test/read.cgi/tech/1024411711/221" target="_blank">&gt;&gt;221</a> <br> &gt; システムコールをアセンブリ言語で実装し、 <br> システムコールの実装って、どこまでを指してます ? <br> ＯＳって、ユーザープログラムからみるとシステムコール集合体みたいな <br> もんだから、こう書くとフルアセンブラで書いたＯＳのように取られるか <br> もしれないですよ。(そう言う意味で、<a href="../test/read.cgi/tech/1024411711/219" target="_blank">&gt;&gt;219</a> では「ＯＳの受け口も」と <br> 言う表現にしてます。(まあ、まだまだあいまいですけどね。)) <>
ひげぽん<><>02/06/25 00:25<> <a href="../test/read.cgi/tech/1024411711/223" target="_blank">&gt;&gt;223</a> <br> えっと。 <br> まだ一行もソースを書いてないで言っているので <br> あくまでも計画ですが、 <br> 基本的には、アセンブリ言語でしかかけない部分のみ <br> アセンブリ言語で書く予定です。 <br>  <br> 結局システムコールの一部をアセンブリ言語で書かざるを得なくて <br> Cから呼び出せるようにしたいということを言いたかった。 <br> 言ってること変わってますね→私 <br>  <>
デフォルトの名無しさん<><>02/06/25 01:28<> ゲーム機はスーファミまではオールアセンブラだったヨ。 <br>  <>
デフォルトの名無しさん<><>02/06/25 01:31<> ひげぽんの開発環境何？ <>
デフォルトの名無しさん<><>02/06/25 01:32<> <a href="../test/read.cgi/tech/1024411711/224" target="_blank">&gt;&gt;224</a> <br> そんなことより１よ。 <br> BTRON作ってくれ。 <br> 超漢字買う金がない。 <br>  <>
デフォルトの名無しさん<><>02/06/25 01:37<> http://www.tron.org/ <>
デフォルトの名無しさん<><>02/06/25 01:42<> C#ｷﾎﾞﾝﾇ <>
デフォルトの名無しさん<><>02/06/25 05:17<> C#ってOS組めるの？  <br>   <>
デフォルトの名無しさん<><>02/06/25 06:01<> <a href="../test/read.cgi/tech/1024411711/230" target="_blank">&gt;&gt;230</a> <br> 無理に決まってんだろ！（ｗ <>
　　<>sage<>02/06/25 07:14<> 今から１０年前の某雑誌に、CGデザイナーで著名な方が、「将来、 <br> CGのためのOSを作りたいですね」といってました。 <br> 「CGのためのOS?」。当時、OSのことについて何もわからなかった <br> 自分はサパーリ理解せずに読み飛ばしていたのですが、今OSのことを <br> そこそこ理解した状態では、「CGのためのOS」の仕様がどのような <br> ものになるのかものすごく気になるのです。 <br> ココのスレはOSの内部についても詳しい方がいるようなので、もし <br> 「CGのためのOS」を考えるならどういう仕様になるのか教えてください。 <br>  <>
デフォルトの名無しさん<>sage<>02/06/25 07:30<> GPUを並列動作可能なMPUとして扱うアーキテクチャ。 <br> 複数枚のGPU搭載ビデオカードを刺しておけば、 <br> それぞれのカードに演算要求を出し、結果を１つに集約する。 <br>  <>
ネギトロ<><>02/06/25 19:07<> ちょっとシステムコールの実装について誤解があるようなので。 <br>  <br> C言語で書いた関数でも、コンパイルされたあとのバイナリでは機械語の並びになります。 <br> んでもって、アセンブリ言語でいうところのJMPとかCALL命令を使って呼び出すわけですけど <br> x86の場合、同じセグメントにある関数(ユーザプロセスの関数)を呼び出すのと、 <br> 異なるセグメントにある関数(システムコール)を呼び出すのとは手続きが違います。 <br> 前者はJMP,CALL等の命令で可能ですが、 <br> 後者の関数呼び出しを実現するには、割り込みを発生させる、コールゲートを呼び出す <br> # 他にありましたっけ？ <br> などの方法を用いなければなりません。 <br> 例えばLinuxではintXXを使ったソフトウェア割り込みを使っています。 <br> そして、システムコール関数もＣ言語の中から呼び出すwrite()やsocket()といった <br> ものの実体は、引数をレジスタに積んでソフトウェア割り込みを発生させるだけのシロモノです。 <br>  <br> ということで、ＯＳをコーディングする時に言語を何にするかというのは実はあまり大きな問題ではなく、 <br> その言語で提供されているパラダイムの中で、それがコンパイル後にどのような形になるかが問題です。 <br> で、Ｃ言語の場合、同一のプロセス空間(同じセグメント)の関数をコールする、という形しか考えられていないので、 <br> システムコール呼び出しのように、異なるパラダイムの部分は(インライン)アセンブラで書いているわけです。 <br>  <br> 文章の雰囲気からして、<a href="../test/read.cgi/tech/1024411711/1" target="_blank">&gt;&gt;1</a>は高校生っぽいので、 <br> http://www.amazon.co.jp/exec/obidos/ASIN/4274073815/ref=sr_aps_d_1_1/249-2751067-2413142 <br> 「図解32ビットマイクロコンピュータ80386の使い方」W.B.スルヤント著 <br> をオススメしておきます。私が高校生の頃に読んでた本だし、難易度的にも丁度いいんじゃない？ <>
デフォルトの名無しさん<>sage<>02/06/25 20:57<> <a href="../test/read.cgi/tech/1024411711/234" target="_blank">&gt;&gt;234</a> <br> １は２３だが、、、 <br> まぁSEといってたから高校生ではないな。 <>
ひげぽん<><>02/06/25 21:03<> <a href="../test/read.cgi/tech/1024411711/234" target="_blank">&gt;&gt;234</a> <br> おっと。 <br> 文章はまだ若いということで勘弁してもらえないっすかね。 <>
  <>sage<>02/06/25 21:04<> 別にLinuxのシステムコールがことなるセグメントにあるわけじゃないけどね。 <>
ひげぽん<><>02/06/25 21:13<> <a href="../test/read.cgi/tech/1024411711/234" target="_blank">&gt;&gt;234</a> <br> 詳しい解説ありがとうございます。 <br> 質問です。 <br> ご紹介の本を読めば、分かるのでしょうけど <br> 今ちょっといろいろな本を消化中なもので・・・・ <br> &gt;x86の場合、同じセグメントにある関数(ユーザプロセスの関数)を呼び出すのと、  <br> &gt;異なるセグメントにある関数(システムコール)を呼び出すのとは手続きが違います。 <br> 同じセグメント、異なるセグメントとは何でしょうか？ <br>  <>
デフォルトの名無しさん<>sage<>02/06/25 21:24<> <a href="../test/read.cgi/tech/1024411711/238" target="_blank">&gt;&gt;238</a> <br> 「はじめて読む486」を参照。 <>
デフォルトの名無しさん<><>02/06/25 21:28<> http://newos.sourceforge.net/ <>
デフォルトの名無しさん<>sage<>02/06/25 21:29<> セグメントって言う言い方誤解を招かないか？ <br> セレクタの方が適切だろ。 <>
デフォルトの名無しさん<>sage<>02/06/25 23:00<> おもしろそうなので一緒に勉強してます。 <br>  <br> ときどきお話に出てくるブートローダ（MBRのことですよね？）やブートセクタ（パーティションの先頭？）を <br> 直接見たり、書き換えるにはnasmとかmasmのツールでできるのでしょうか？ <br>  <br> <a href="../test/read.cgi/tech/1024411711/159" target="_blank">&gt;&gt;159</a>さんのブートの話はとても魅力的です。どの辺の資料を読めばできるようになるか <br> 教えていただけないでしょうか？「はじめて読む486」でしょうか？nasmなどのマニュアルでしょうか？ <br>  <br> よろしくお願いします。 <>
デフォルトの名無しさん<>sage<>02/06/25 23:07<> MBRはブートローダーを保存する領域 <br> ブートローダーは保存されるプログラム <>
242<>sage<>02/06/25 23:09<> <a href="../test/read.cgi/tech/1024411711/243" target="_blank">&gt;&gt;243</a> <br> さっそくのレスありがとうございました。 <br> 勘違いしていました。 <br>  <br> それで、どうやって、ブートローダを読み書きすればよいのでしょうか？ <br> よろしくお願いします。 <>
デフォルトの名無しさん<><>02/06/25 23:44<> <a href="../test/read.cgi/tech/1024411711/244" target="_blank">&gt;&gt;244</a> <br> 　じぶん　で　けんさく　した　ほうが　あたまに　はいる　よ　。 <br> 　かころぐ　を　しらべて　かんれんせい　が　ありそうな <br> 　きーわーど　を　みつけて　ごらん　。 <br>  <br> 　If you understand , use "google" and go to the mad house. Hyahaha <>
デフォルトの名無しさん<>sage<>02/06/26 09:43<> x86っつっても、80286、80C86、IA-32で、それぞれ呼び出し時になにが起こるかぜんぜん違うしな。 <>
デフォルトの名無しさん<>sage<>02/06/26 11:31<> <a href="../test/read.cgi/tech/1024411711/244" target="_blank">&gt;&gt;244</a> <br> NT/2000ならリソースキットかインストールCDのdskprobe.exeを使ってごらん。 <br>  <br> <a href="../test/read.cgi/tech/1024411711/243" target="_blank">&gt;&gt;243</a> <br> くだらん。 <br>  <br> <a href="../test/read.cgi/tech/1024411711/245" target="_blank">&gt;&gt;245</a> <br> 知らないなら知らないと言えよ。（ｗ <>
244<>sage<>02/06/26 12:35<> <a href="../test/read.cgi/tech/1024411711/247" target="_blank">&gt;&gt;247</a> <br> ありがとうございます。2000ユーザなので、家に帰ったらやってみます。 <br>  <br> <a href="../test/read.cgi/tech/1024411711/246" target="_blank">&gt;&gt;246</a> <br> ごもっとも。 <br> あと、英語が少し変です。 <>
デフォルトの名無しさん<>sage<>02/06/26 16:54<> <a href="../test/read.cgi/tech/1024411711/247" target="_blank">&gt;&gt;247</a> <br> 最初の2行だけにしとけばよかったのにな。 <br>  <br> <a href="../test/read.cgi/tech/1024411711/248" target="_blank">&gt;&gt;248</a> <br> 246へのレスは245へのレスか？ <br> どこが変なのか教えてたも <>
ｳﾏさんｼｶさん </b>◆vBaka42s <b><><>02/06/26 22:36<> <a href="../test/read.cgi/tech/1024411711/244" target="_blank">&gt;&gt;244</a> <br> rawriteあたりでやればいいんじゃないのか? <br> というかなぜOS板を見ないの? <>
デフォルトの名無しさん<>sage<>02/06/26 22:51<> <a href="../test/read.cgi/tech/1024411711/248" target="_blank">&gt;&gt;248</a> <br> がんばってください。 <br> でも、日本語が少し変です。 <>
ひげぽん<><>02/06/26 23:51<> <a href="../test/read.cgi/tech/1024411711/242" target="_blank">&gt;&gt;242</a> <br> 242さんよろしく。 <br> 一緒に学んで行きましょう。 <br>  <br> ちょうどブートのお話が出てきているので便乗質問です。 <br> 以下の(1)(2)(3)の認識はあっていますか？ <br> (1)フロッピーディスクからブートする場合、 <br> 　 ディスクの最初のセクタにあるコードが実行される。 <br> (2)(1)で実行されたコードがさらに、フロッピーディスク上の <br> 　 他のコードを起動することで <br>    OS本体を呼び出すことが出来る <br> (3)(1)(2)が正しいと仮定して、 <br>    あるCPUを載せた、PCがあるとする。 <br>    そのPC上でスタティックコンパイルすることにより作成された <br>    バイナリ実行イメージがある。(例えばHELLO WORLDプログラム) <br> 　 上記バイナリイメージをフロッピーディスク上に配置し、 <br>    (1)(2)の手順でそのバイナリイメージを呼び出し実行することが出来る。 <br>  <br> 間違いや、認識違いを指摘していただけるとありがたいです。 <>
デフォルトの名無しさん<><>02/06/27 00:04<> <a href="../test/read.cgi/tech/1024411711/245" target="_blank">&gt;&gt;245</a> <br> understandの時点でうそ英語 <br> 馬鹿丸出しだね。 <>
デフォルトの名無しさん<>sage<>02/06/27 00:09<> 鈴木アグリー <>
デフォルトの名無しさん<><>02/06/27 00:13<> <a href="../test/read.cgi/tech/1024411711/253" target="_blank">&gt;&gt;253</a> <br> understoodにするの？ <br> 教えてくれ。 <>
デフォルトの名無しさん<><>02/06/27 00:20<> あんでーすてんど <>
デフォルトの名無しさん<>sage<>02/06/27 01:35<> 0000 0001 0000 <br>  <>
デフォルトの名無しさん<><>02/06/27 06:17<> <a href="../test/read.cgi/tech/1024411711/232" target="_blank">&gt;&gt;232</a> <br> 電波だから気にしない方が良い。 <br>  <br>  <br> 水彩画家が『将来、アーティスティックなビルを建ててみたい』と言っているような物だから、 <br>  <br> <a href="../test/read.cgi/tech/1024411711/1" target="_blank">&gt;&gt;1</a> <br> 第２種情報処理技術者試験くらい受けてからOSに挑戦しろ <>
デフォルトの名無しさん<>sage<>02/06/27 06:37<> 一から勉強しながらＯＳ作ろうっていうのがきついな <br> minix,linuxを解析したほうが近道だろ <br> 今のレベルでは素人がいきなりオリンピックに参加するようなもの <>
デフォルトの名無しさん<><>02/06/27 08:35<> <a href="../test/read.cgi/tech/1024411711/259" target="_blank">&gt;&gt;259</a>  <br>  いや、学問に王道なし。  <br>    <br>  minixとかはOSとはなんぞやComputerとはなんぞや、Architectureとはなんぞや  <br>  がわかってからで遅くはない。  <br>  むしろ、わかってからならば早く理解できる。  <br>  まぁ、<a href="../test/read.cgi/tech/1024411711/1" target="_blank">&gt;&gt;1</a>はOADGとかも知らないだろうし、OSを組むのは１年早い。 <>
デフォルトの名無しさん<>sage<>02/06/27 10:25<> <a href="../test/read.cgi/tech/1024411711/260" target="_blank">&gt;&gt;260</a> <br> そういうのを勉強しながら学ぶのにMinix本は最適なんだけどねー <>
デフォルトの名無しさん<>sage<>02/06/27 10:44<> なあ。なんで、どうでもいいお説教するやつ多いんだ。 <br> おまえらじいさんか？ <br> どうせ自分じゃ何にもできねーんだろ。 <br> うざいから、「検索しろ」だの「もっと勉強してから」だの言うなよ。 <>
デフォルトの名無しさん<><>02/06/27 11:10<> 作りながら学習するのは楽しいぞ <br> 楽しいからプログラミングする <br> まさに本来の姿 <>
１じゃないけど<>sage<>02/06/27 11:12<> <a href="../test/read.cgi/tech/1024411711/258" target="_blank">&gt;&gt;258</a>  <br>  &gt;第２種情報処理技術者試験くらい受けてからOSに挑戦しろ  <br>    <br>  必要性を示してください。 <>
デフォルトの名無しさん<>sage<>02/06/27 13:33<> 別に２種持ってないとOSがつくれんわけじゃないが、２種取れる程度の知識もないと、 <br> OSの勉強すらままならんだろ。 <>
デフォルトの名無しさん<>sage<>02/06/27 19:16<> あんつーれべるのひくさだ。 <>
264<><>02/06/27 20:43<> <a href="../test/read.cgi/tech/1024411711/265" target="_blank">&gt;&gt;265</a>  <br>  &gt;２種取れる程度の知識もないと、OSの勉強すらままならんだろ。  <br>    <br>  これは同意。  <br>    <br>  でも <a href="../test/read.cgi/tech/1024411711/258" target="_blank">&gt;&gt;258</a> は「受けろ」と言ってるから。  <br>  基本情報処理技術者試験を受験する必要がどこにあるのかと。 <>
デフォルトの名無しさん<><>02/06/27 21:14<> <a href="../test/read.cgi/tech/1024411711/267" target="_blank">&gt;&gt;267</a> <br> 粘着うぜぇ。内容のない会話して何が楽しいんだ厨房 <>
デフォルトの名無しさん<><>02/06/27 21:28<> <a href="../test/read.cgi/tech/1024411711/268" target="_blank">&gt;&gt;268</a>  <br>  年幾つよ？ <>
デフォルトの名無しさん<><>02/06/27 21:46<> <a href="../test/read.cgi/tech/1024411711/269" target="_blank">&gt;&gt;269</a> <br> 粘着うぜぇ。内容のない会話して何が楽しいんだ厨房  <br> ^^^^ <>
デフォルトの名無しさん<><>02/06/27 21:49<> <a href="../test/read.cgi/tech/1024411711/270" target="_blank">&gt;&gt;270</a>  <br>  マーはみんな粘着  <br>   <>
ひげぽん<><>02/06/27 22:52<> &gt;第２種情報処理技術者試験くらい受けてからOSに挑戦しろ <br> えーと。大学のときに受けて取得しました(汗) <br> 今は名前が変わったんですよね。 <br> なんだか、すごい自分が馬鹿な質問ばかりするからなんだろうけど <br> 誤解が・・・ <br>  <br>  <br> <a href="../test/read.cgi/tech/1024411711/260" target="_blank">&gt;&gt;260</a> <br> <a href="../test/read.cgi/tech/1024411711/261" target="_blank">&gt;&gt;261</a> <br> 今現在、↓の本を読んで勉強中です。 <br> minixのソースも多少読んでいます。 <br>  <br> 「オペレーティングシステム＜第二版＞ 設計と理論およびMINIXによる実装」 <br> 著：A.S.タネンバウム ＋ A.S.ウッドハル <br> 訳：千輝 順子 <br> 監修：今泉 貴史 <br> プレンティスホール出版 ￥8,800 <>
ひげぽん<><>02/06/27 22:55<> アセンブラができる人に質問です。 <br> x86系のアセンブラ入門には、 <br> NASM と gas(as)どちらが適しているでしょうか。 <br>  <br> またアセンブラに関して <br> ASKAを使用したことのある人いますでしょうか。 <br> ASKAを使用する上でのメリット、デメリットを教えてください。 <>
デフォルトの名無しさん<><>02/06/27 22:57<> ひげぽんって無職？ <>
デフォルトの名無しさん<>sage<>02/06/27 22:59<> nasm使っておけって <>
ひげぽん<><>02/06/27 23:02<> <a href="../test/read.cgi/tech/1024411711/274" target="_blank">&gt;&gt;274</a> <br> へなちょこSEです。 <br> <a href="../test/read.cgi/tech/1024411711/275" target="_blank">&gt;&gt;275</a> <br> 出来ればgasを薦めない理由もしくは、NASMを薦める理由 <br> を教えてください。 <>
デフォルトの名無しさん<>sage<>02/06/27 23:10<> <a href="../test/read.cgi/tech/1024411711/276" target="_blank">&gt;&gt;276</a> <br> gasのニモニックは少なくともx86環境に置いては一般的じゃないから <>
ひげぽん<><>02/06/27 23:24<> <a href="../test/read.cgi/tech/1024411711/277" target="_blank">&gt;&gt;277</a> <br> なるほど。 <br> そろそろフロッピーブート＆アセンブラHELLO WORLD <br> に取り組もうとしてたところなので助かります。 <br> 貴重なアドバイスありがとう。 <>
デフォルトの名無しさん<><>02/06/27 23:26<> OS作れるとどうなるの？ <br> 芸津のようにお金持ちになれるの？ <br> 自己満足？、要はオナニーソフト？ <br>  <br> OS作った先の未来にはナニが待ってるの？ <br>  <br> お家に帰ってきたら足の臭いお父さん達が、頭を禿に <br> しながらせっせと築き上げてきたOSがそんな簡単に <br> 出来上がるものなんの？ <br>  <br>  <>
デフォルトの名無しさん<><>02/06/27 23:41<> (^Д^)ｷﾞｬﾊ!↑みなさん、この人のレスどう思いますか♪ <br> なんてありきたりなんでしょうね♪ <br> 誰もが皆、一瞬つけてみたくなる発想のレスです♪ <br> しかし、賢明な人はその自らの短絡的思考を野放しにする事を嫌がり、 <br> こういうレスは控えます♪ <br> しかし、この人はしてしまったのです(^^;ﾜﾗ <br> 「誰もが思い付くような事」を堂々と♪ <br> この人にとってこのレスは何なのでしょうか♪ <br> このレスをしている間にも時間は刻々と 過ぎ去っているのです♪ <br> 正にこの人のした事は「無意味」「無駄」でしかありません♪ <br> ああ・・・何ていう事でしょう(^^;ﾜﾗ <br> 図星で泣いちゃうかも(^^;ﾜﾗ  <>
デフォルトの名無しさん<>sage<>02/06/27 23:50<> 元々、無駄なスレに無駄なレスをつけて、無駄なレスを返す <br> <a href="../test/read.cgi/tech/1024411711/280" target="_blank">&gt;&gt;280</a>や他も馬鹿っぽいよ(^^；ﾜﾗ <br>  <br> 特に<a href="../test/read.cgi/tech/1024411711/280" target="_blank">&gt;&gt;280</a>は海馬にカビが生えてる。ｷﾓ <br>  <>
デフォルトの名無しさん<>sage<>02/06/27 23:55<> こういうときはおとなしくﾂﾚﾀ!、とか書いておけばいいんですよ。 <>
デフォルトの名無しさん<><>02/06/28 00:15<> ﾏｼﾞﾚｽがかっこ悪いというのには反対だけど <br> ｺﾋﾟﾍﾟにﾏｼﾞﾚｽはさすがにかっこ悪いと思うよ <>
デフォルトの名無しさん<>sage<>02/06/28 01:30<> &gt;&gt; 279 つくれるからどうというわけでは、ないでしょう。 <br> でもその作る人にとっては、その作る上での技術を実際に体で <br> 覚えられて経験上いいのではないでしょうか? <br>  <br> また、「そりゃオナニーソフトだろう!」といわれたって、 <br> 「自分が気持良い」ソフトが一番うまく書けるということはないですか? <br> それで他のみんなも気持良ければもっと良いでしょう。 <br>  <br>  <br>  <>
デフォルトの名無しさん<><>02/06/28 17:20<> <a href="../test/read.cgi/tech/1024411711/272" target="_blank">&gt;&gt;272</a>  <br>  ほんとかよ。  <br>  てっきり俺はJava専門プログラマかと思ったよ。  <br>    <br>  <a href="../test/read.cgi/tech/1024411711/264" target="_blank">&gt;&gt;264</a>  <br>  上の理由により。  <br>  OSを作るならノイマン型コンピュータの基礎くらい知っていて欲しいのでね。  <br>  Java環境だけじゃなくて。  <br>    <br>    <br>  minixを参考にするのに良い点はx86用OSを作るときの例としてだと思う。  <br>  minixがOSだと思うと、x86以外は取っつきにくくなっちゃうか、  <br>  後で後悔すると思うな。  <br>  あれはOSだがOSはあれではない。  <br>  もっと広い視点と腰を据えた覚悟と長期計画が必要だと思うな。マジでやるんなら。  <br>  趣味でやるら、まず、コード書いてNETに上げてみな。まずはそれからだと思う。  <br>   <>
デフォルトの名無しさん<>sage<>02/06/28 18:28<> <a href="../test/read.cgi/tech/1024411711/285" target="_blank">&gt;&gt;285</a> <br> お前は何様なんだ？ <>
デフォルトの名無しさん<><>02/06/28 18:38<> <a href="../test/read.cgi/tech/1024411711/285" target="_blank">&gt;&gt;285</a>  <br>  自信満々みたいだけど何が言いたいのか分からん。  <br>  表現力不足なのか分かってないのか。  <br>    <br>  いまのままじゃオナニー演説。 <>
デフォルトの名無しさん<>sage<>02/06/28 19:05<> プログラマーならカキコでオナニーするんじゃなくて <br> 作品でオナニーすべきだな。 <>
デフォルトの名無しさん<><>02/06/28 20:03<> プログラマーならオナニーはしない。 <>
デフォルトの名無しさん<><>02/06/28 20:49<> マーはニーしる！ <>
デフォルトの名無しさん<><>02/06/28 21:04<> ぶっちゃけ、特定のハードウェアを限定するようなOSなど、真のOSではない。 <br> ハードウェアの違いを吸収し、共通の環境を提供するのが真のOSである。 <br>  <br> x86限定のOSなんて作るくらいなら、WindowsかFreeUNIXで十分だ。 <>
デフォルトの名無しさん<><>02/06/28 21:08<> &gt;x86限定のOSなんて作るくらいなら、WindowsかFreeUNIXで十分だ。 <br> きっと作る事に意味があるんだよ。 <br> ゲームだって、しょぼくても作るとたのしいじゃん <>
デフォルトの名無しさん<>sage<>02/06/28 21:11<> <a href="../test/read.cgi/tech/1024411711/291" target="_blank">&gt;&gt;291</a> <br> それがJavaや.NET。　　　などといってみるテスト。 <>
デフォルトの名無しさん<><>02/06/28 21:39<> <a href="../test/read.cgi/tech/1024411711/293" target="_blank">&gt;&gt;293</a> <br> たぶん､それは違う <>
デフォルトの名無しさん<>sage<>02/06/28 21:43<> <a href="../test/read.cgi/tech/1024411711/291" target="_blank">&gt;&gt;291</a> <br> つまり、x86、Alpha、68、PowerPC、Sparc、 <br> SH-3/4、ARM、V30 でも動くようにしろと。 <>
デフォルトの名無しさん<><>02/06/28 22:08<> ひげぽんさんがんばってなー <br> そのうち、すげーへなちょこでいいから公開してや。 <br> 個人的にはDOSがいいなぁ。一枚ね。 <br> くっだらねぇのでいいからゲームとかつけちゃってさ。 <br> オセロとか、もうこの際数字あてゲームでもいいや。 <br> シェルもあるんだかないんだか、suujigameとexitしか受け付けない <br> みたいなね。 <br> もう起動してから５分位であきちゃうのよ。 <br> でもなんかね、 <br> お、ひげぽんのOSちゃんと動くじゃん、みたいなね。 <br> 極端な話、そんなんでもいいと思うのよね、俺。 <br> OSなんてとても作れそうにない俺にはきっとうらやまスィーのよね。 <br>  <>
デフォルトの名無しさん<><>02/06/28 23:12<> <a href="../test/read.cgi/tech/1024411711/252" target="_blank">&gt;&gt;252</a> <br>  <br> (1)-(3) PC/AT,PC-98xx,X68kに関して言えば、yes. <>
デフォルトの名無しさん<>sage<>02/06/28 23:13<> <a href="../test/read.cgi/tech/1024411711/296" target="_blank">&gt;&gt;296</a> <br> それはOSなのかと小一時間問いたい。 <br> 小学校に直起動のゲームがあったけどどっちかといえばそれに似てるな。 <>
デフォルトの名無しさん<><>02/06/28 23:53<> <a href="../test/read.cgi/tech/1024411711/298" target="_blank">&gt;&gt;298</a> <br> うーむ。それもそうだな・・。 <br> まぁひげぽんさんの話ぶりだと <br> 理想みたいなものはあるんだろうからして <br> そこまで極端ではないだろうけどね・・ <>
デフォルトの名無しさん<><>02/06/29 01:59<> <a href="../test/read.cgi/tech/1024411711/292" target="_blank">&gt;&gt;292</a>  <br>  おれはユーティリティ作る方が燃えるけどな。  <br>  システムを完全に、俺好みの方法でコントロール下においてやるぜグハハハハ。  <br>  って感じで。  <br>   <>
デフォルトの名無しさん<><>02/06/29 02:04<> <a href="../test/read.cgi/tech/1024411711/293" target="_blank">&gt;&gt;293</a> <br> Javaは実行環境。 <br> .netはMS独自仕様プロトコル。戦略的にはRFC無視の方向で逝きたいんだろうな。 <>
デフォルトの名無しさん<><>02/06/29 02:04<> おれは足回りを作るのが好き <br>  <br> I/O直叩き、デバドラ作成は楽しいよ <br> 最近ディスク周りとかがマイブーム <br>  <br> USBはターゲットもホストも簡単すぎてつまんない <>
デフォルトの名無しさん<><>02/06/29 02:13<> <a href="../test/read.cgi/tech/1024411711/302" target="_blank">&gt;&gt;302</a> <br> すげー。いろいろ教えて欲しいよ。 <br> あのさぁ、PCMCIAのドライバとかも作れる？ <>
デフォルトの名無しさん<>saget<>02/06/29 02:53<> まあ煽りはほっときましょう <br> どこのスレにも蛆のようにわいてくるんだから。 <>
デフォルトの名無しさん<>sage<>02/06/29 03:01<> <a href="../test/read.cgi/tech/1024411711/302" target="_blank">&gt;&gt;302</a> <br> そんなあなたに1394 <>
デフォルトの名無しさん<>sage<>02/06/29 03:03<> PCMCIAはPCIやISAをいじった人なら全然難しくないよ <br> というかそのあたりを学ぶ過程で必ず <br> PCMCIAは難しくないというのを知るし。 <br> 1394は手元に資料が何も無いんでパス。 <br> つーか流行ると思わなかったから何も勉強してないし・・・ <>
デフォルトの名無しさん<>sage<>02/06/29 03:43<> めちゃくちゃおもしれーじゃねーか <br> c++の勉強してんのにハードの勉強させんなよ(笑) <br>  <br> 俺もOSつくりてー <br> でもまずはc++(笑) <br> 23か、若いなぁ．．．俺今18だけど23でそれできるかなぁ．．． <br> 頑張ってくださいsageながら見守ります <>
デフォルトの名無しさん<>sage<>02/06/29 03:46<> <a href="../test/read.cgi/tech/1024411711/306" target="_blank">&gt;&gt;306</a> <br> デバイスドライバの作り方の説明って、要約すると <br> 「init と open と close 作りなさい」って感じじゃん？それはまあ分かるんよ。 <br> でも、実際に目の前にPCカードが一枚あってそのドライバがネットには <br> いくら探しても無くて、自分で作るより他に手は無いってなったときに、 <br> 具体的にどうやってその init やら open やらを作ればいいの？ <br> 当然メーカーのウェブページに細かい仕様が載ってるわけでもなし、 <br> どのIOポート(でいいのかな？)にどんなデータ送るとどんな風に反応するか <br> 分からなくて、、、。 <br> そういう情報はどっから手に入れる？ <>
デフォルトの名無しさん<>sage<>02/06/29 04:05<> 基本的にボードメーカは何も知らないフリをするから要注意。 <br> すべてチップから想像するって感じ。 <br> まず、とりあえずダメ元でメーカに電話。 <br> 平行してgoogleで全言語で検索。（日本語には情報はまず無い） <br> さらに似たようなチップを使ってるデバイスの <br> Linux(*BSD)のソースを見る。で、使えそうなら丸パクリ。 <br> 月刊インターフェイスのバックナンバーは捨てずにとっとく。 <>
デフォルトの名無しさん<>sage<>02/06/29 04:09<> WinのドライバはよくわからんけどLinuxのドライバは <br> 作りがバカみたいに単純（だから弊害も多いけど）。 <br> NIC関連のソースはひじょーに勉強になったね。 <>
デフォルトの名無しさん<>sage<>02/06/29 04:11<> って、OSからかけ離れてるな・・・ <br> OSの華はやっぱりスケジューリングとメモリ管理だよね。 <br> ファイルシステムも面白いけど、２の次だよね。 <>
デフォルトの名無しさん<>sage<>02/06/29 04:24<> <a href="../test/read.cgi/tech/1024411711/309" target="_blank">&gt;&gt;309</a> <br> そっか。やっぱドライバ作る奴ぁすげーな。俺にはとても出来そうにない。 <>
デフォルトの名無しさん<>sage<>02/06/29 04:38<> グラフィックスもだろう <>
ひげぽん<><>02/06/29 13:37<> &gt;(1)フロッピーディスクからブートする場合、 <br> &gt;　 ディスクの最初のセクタにあるコードが実行される。 <br> &gt;(2)(1)で実行されたコードがさらに、フロッピーディスク上の <br> &gt;　 他のコードを起動することで <br> &gt;OS本体を呼び出すことが出来る <br> &gt;(3)(1)(2)が正しいと仮定して、 <br> &gt;あるCPUを載せた、PCがあるとする。 <br> &gt;そのPC上でスタティックコンパイルすることにより作成された <br> &gt;バイナリ実行イメージがある。(例えばHELLO WORLDプログラム) <br> &gt;　 上記バイナリイメージをフロッピーディスク上に配置し、 <br> &gt;(1)(2)の手順でそのバイナリイメージを呼び出し実行することが出来る。 <br> <a href="../test/read.cgi/tech/1024411711/297" target="_blank">&gt;&gt;297</a> <br> ありがとう。 <br> ひげぽんの当面の目標は(3)かな <>
ひげぽん<><>02/06/29 13:46<> &gt;ぶっちゃけ、特定のハードウェアを限定するようなOSなど、真のOSではない。 <br> &gt;ハードウェアの違いを吸収し、共通の環境を提供するのが真のOSである。 <br> &gt; <br> <a href="../test/read.cgi/tech/1024411711/291" target="_blank">&gt;&gt;291</a> <br> 私も同意見です。 <br> ただし、1からこれを実現するのは難しいと思います。 <br> ある程度メジャーなハードウェア環境で動くOSを作ることからはじめて、 <br> あとで他の環境でも動くように移植すればいいと思っています。 <br> もちろん出来るだけハードウェア依存する部分は少なくすることは心がけます。 <br>  <br>  <>
ひげぽん<><>02/06/29 13:48<> <a href="../test/read.cgi/tech/1024411711/296" target="_blank">&gt;&gt;296</a> <br> ありがとう。 <br> 296さんもあきらめず。作ってみては？ <>
デフォルトの名無しさん<><>02/06/29 13:58<> お〜おもしれ〜じゃん。俺も参戦するぜ！ <br> で、例えばフロッピーからブートして"helloworldプログラム"表示させるのにファイルシステムを <br> 作らなきゃダメなんですか？ <>
デフォルトの名無しさん<>sage<>02/06/29 14:26<> CSH読み込んでLBA算出すればファイルシステム何ぞイラン。 <>
デフォルトの名無しさん<>sage<>02/06/29 14:40<> じゃあみんなで手分けしてやろうぜ。漏れ helloworld担当でいいすか？（汗 <>
デフォルトの名無しさん<><>02/06/29 15:50<> javaで書けない部分とはアセンブラオンリーの部分を除いて具体的にどこなのだ。 <>
デフォルトの名無しさん<>sage<>02/06/29 17:02<> なぜそんなにJAVA、JAVA言うんだい？ <>
デフォルトの名無しさん<>sage<>02/06/29 17:41<> javavm <>
デフォルトの名無しさん<>sage<>02/06/29 22:02<> <a href="../test/read.cgi/tech/1024411711/291" target="_blank">&gt;&gt;291</a> <br> ハードウェアってどの範囲を指してんだ ? プロセッサの種別か ? 使ってるバス <br> のアーキテクチュアか ? ここら辺を特定しないで... <br> &gt; ハードウェアの違いを吸収し、共通の環境を提供するのが真のOSである。 <br> なんて言ってる奴は、多分真の厨房だろうな。 <br> そう言う目的のＯＳと言うものもあるだろうし、ちょっとしたハードウェアの違い <br> を吸収すると言う目的は理解できるけど、ちゃんとやろうとすると苦労多くして益 <br> なしになるのがオチ。極端な話、スーパーコンピュータから携帯電話まで同じＯＳ <br> が走ると思う ? (そりゃ極端過ぎるよと言うかも知れんが、J○va なんてそれに <br> 近いことほざいてたんだから。UCSD P-Machine の時代から誰もが考えて、誰も <br> 成功していない課題だよ。) それに多くの場合、そう言うハードウェアの違いを <br> 吸収するのはＯＳじゃなくてデバイスドライバ。だから、対象ハードウェアを増 <br> やすには基本的に人海戦術しかないよ。はっきり言ってそんなことに労力を使う <br> のは、無駄だし「ひげぽん」が大金持ちでもない限りむり。普通のＰＣできちん <br> と動くＯＳを作るべし。 <>
デフォルトの名無しさん<>sage<>02/06/29 22:13<> そうそう、理想論だけで現実的な線での妥協と言う物を知らないのが困る。 <>
デフォルトの名無しさん<>sage<>02/06/29 22:17<> x86 AT が基準でｲｲがあまりべったりだと移植性に乏しくなるってことじゃん。 <br>  <br> 実際に対応するかどうかは別問題。 <>
デフォルトの名無しさん<><>02/06/29 22:19<> <a href="../test/read.cgi/tech/1024411711/315" target="_blank">&gt;&gt;315</a>  <br>  始めにプログラム向けの仕様を決めておいて、それからハードウェアを合わせていくって  <br>  手もあるかもよ。  <br>  理想的な環境をイメージしておいて、それを実現するためにハードウェアに近い部分  <br>  を構築するって感じで。  <br>  ファンクションコールで欲しい物をリストして、それをハードウェア仕様に合わせて  <br>  実現させればいい。手順も統一してあると嬉しいな。  <br>    <br>  <a href="../test/read.cgi/tech/1024411711/323" target="_blank">&gt;&gt;323</a>  <br>  まぁ、パフォーマンスは激悪になるだろうね。  <br>  これは仕方ないと思う。  <br>  だけど、プログラムやOSの移植性は抜群に良くなる。 <>
デフォルトの名無しさん<><>02/06/29 22:22<> <a href="../test/read.cgi/tech/1024411711/323" target="_blank">&gt;&gt;323</a> <br> スーパーコンピュータから携帯電話まで、同じライブラリが使えると嬉しいな。（ｗ <br> 一回コンパイルしとけば依存関係を気にしなくていい。 <>
327<><>02/06/29 22:27<> まぁ、OSと言うよりVMに近いかな。 <br> OSとVMを統合して一歩進めた形だな。究極のOS環境。 <>
デフォルトの名無しさん<>sage<>02/06/29 22:44<> <a href="../test/read.cgi/tech/1024411711/328" target="_blank">&gt;&gt;328</a> <br> そんなもん、ハードウェアが一つの規格に統一されれるほうが <br> 利用者（プログラマ）側としては究極だろ。 <>
327<><>02/06/29 23:02<> <a href="../test/read.cgi/tech/1024411711/329" target="_blank">&gt;&gt;329</a> <br> 統一されるわけねーだろ。（ｗ <br>  <>
デフォルトの名無しさん<>sage<>02/06/29 23:04<> <a href="../test/read.cgi/tech/1024411711/327" target="_blank">&gt;&gt;327</a> <br> いったいそれをどのような目的のために使うというのだ。 <br>  <br> PCにつまれるx86系CPUにとって得意な処理もあれば苦手な処理もある。 <br> あとROM,RAM等のハード資源を無視して強引にOSを作ってもまるで意味が無い。 <br>  <>
デフォルトの名無しさん<>sage<>02/06/29 23:08<> <a href="../test/read.cgi/tech/1024411711/330" target="_blank">&gt;&gt;330</a> <br> それを言ったらOSだって統一されるわけねーし、 <br> 実装依存で余計に苦しむ場面も多々出てくるよ。 <>
327<><>02/06/29 23:08<> ハードウェアってのはどうしても、物理世界の壁に直面する。 <br> 電源容量、ノイズ、媒体特性、製造コスト、こういうのがある限り、ハードウェア <br> を統一しようというのは無理。 <br> だから、そのために、OSと言う物が存在している。 <br> だけど、今のOSは、特定のCPUに依存しがち。 <br> だから、CPU依存をできるだけ廃したOSがあれば、かなり良いと思う。 <br> パフォーマンスは多少悪くなっても、まぁ、最近のCPU性能ならOld Pentiumクラス <br> で動かしたWindowsと同等の性能程度で実現可能だろう。 <br> リアルタイム性も持たせれば、クリティカルな処理以外は全く問題なくなる。 <br> クリティカルな処理は、Network経由でCPUサーバが処理するようにするとか、 <br> 分散オブジェクトをサポートすればいい。 <br>  <>
327<><>02/06/29 23:12<> <a href="../test/read.cgi/tech/1024411711/331" target="_blank">&gt;&gt;331</a> <br> まぁ、どうだろ。 <br> 初歩的な関数から作ってみて、徐々に拡張してみては。 <br>  <>
327<><>02/06/29 23:13<> 目的は・・・作者次第じゃねーの？ <>
327<><>02/06/29 23:20<> <a href="../test/read.cgi/tech/1024411711/332" target="_blank">&gt;&gt;332</a> <br> OSは統一されるべき。 <br> だけど、アプリケーションソフトは統一されるべきではない。 <br>  <br> 基本は統一されるべきだが、応用は自由に発展すべき。 <br>  <>
デフォルトの名無しさん<>sage<>02/06/29 23:29<> <a href="../test/read.cgi/tech/1024411711/336" target="_blank">&gt;&gt;336</a> <br> なんで ? ＯＳだって単なるプログラムだよ。「バカッ速いけど、メモリー保護な <br> んてかったるくってやってられねーよ。」というＯＳや、ひたすらユーザーイン <br> ターフェースに凝りまくるＯＳ。「ハードが死んでも、俺は実行を続けるぜ。」 <br> と言うフォールトレランスなＯＳ。いろいろあっていいんじゃないの ? <br> なんか、ＯＳを特別なプログラムみたいに思ってない ? <>
デフォルトの名無しさん<>sage<>02/06/29 23:54<> じゃあOSつくるよかライブラリとかクラスライブラリとか <br> 環境とか作った方が手っ取り早いね。 <>
デフォルトの名無しさん<><>02/06/30 00:25<> 「ハードが死んでも、俺は実行を続けるぜ。」 <br>  <br> ｶｺ(･∀･)ｲｲ!! <>
デフォルトの名無しさん<>sage<>02/06/30 00:29<> OSを"単なる"プログラムって言ってのけるあたり厨入ってるな。 <br> 明らかに特別なプログラムだろ？ <>
デフォルトの名無しさん<><>02/06/30 00:35<> <a href="../test/read.cgi/tech/1024411711/340" target="_blank">&gt;&gt;340</a> <br> 日本語勉強してから物言え在日 <>
デフォルトの名無しさん<><>02/06/30 00:41<> <a href="../test/read.cgi/tech/1024411711/340" target="_blank">&gt;&gt;340</a> <br> <a href="../test/read.cgi/tech/1024411711/337" target="_blank">&gt;&gt;337</a> の主張は「いろいろあっていいんじゃないの？」って部分なんだが、、 <br> どうでもいい所にちょっかいだしてどうするんだ？ <>
デフォルトの名無しさん<>sage<>02/06/30 00:52<> <a href="../test/read.cgi/tech/1024411711/341" target="_blank">&gt;&gt;341</a>,342 <br> そんなことでageんなよ… <br> ひげぽん氏はどうした？ <>
デフォルトの名無しさん<><>02/06/30 01:04<> まぁ、色々バージョンがあるのは良いんだけど、このOSでは文字列の扱いがまちまち <br> だとか、基本的なファンクションコールの呼び方がまちまちだとか、プログラマ泣かせ <br> の状況は、本来OSという存在を作った意図から外れてる。 <br> BIOSと何ら変わらないよ。 <br> この状況で良いんだったら、CPUベンダかチップセットベンダがROM焼きなり、 <br> ハードコーディングして出せば良いんだ。OSなんて要らないね。 <br>  <br> と言ってみる。 <>
デフォルトの名無しさん<><>02/06/30 01:14<> マイコン用のOSってどうよ？HOSとか <>
デフォルトの名無しさん<>sage<>02/06/30 01:15<> いや、もうTRON最高 <>
日本語おかしいので、訂正と追加<><>02/06/30 01:15<> まぁ、色々バージョンがあるのは良いんだけど、文字列の扱いがまちまちだとか、 <br> 基本的なファンクションコールの呼び方がまちまちだとか、処理系のbit数で計算結果 <br> が変わるとか、こういうというプログラマ泣かせの状況は、本来OSという存在を作った <br> 意図から外れてる。 <br> この状況で良いんだったら、BIOSと何ら変わらないよ。CPUベンダかチップセットベンダが <br> ROM焼きなり、ハードコーディングして出せば良いんだ。OSなんて要らないね。 <br> 単に、BIOSより使いやすいBIOSでしかない。 <br>  <br>  <br>  <br> と言ってみる。 <>
ひげぽん<><>02/06/30 01:16<> 初めて読む486でアセンブラを勉強中です。 <br> しばしお待ちください。 <>
　<><>02/06/30 01:16<> C言語でかけばそれをどんな環境でも <br> その環境でコンパイルすれば使えるって入門書に書いてあったのですが <br> どうですか？ <br>  <>
デフォルトの名無しさん<>sage<>02/06/30 01:18<> コンパイラがあればな <>
デフォルトの名無しさん<><>02/06/30 01:22<> <a href="../test/read.cgi/tech/1024411711/349" target="_blank">&gt;&gt;349</a> <br> コンパイラが存在するのと、 <br> プログラムで使ったライブラリ関数が全く同じ外部仕様で提供されていること。 <br> 他にも、ビッグインディアン/リトルインディアンの違いでハマったり、 <br> intのサイズが違ったり、数えればキリがない。 <br>  <br> そんなえーかげんなことを書いている本は捨てちゃいなさい。 <>
デフォルトの名無しさん<><>02/06/30 01:23<> <a href="../test/read.cgi/tech/1024411711/347" target="_blank">&gt;&gt;347</a> <br> そうだね。このスレ中途半端な知識の展覧会って感じだな。 <br> どんなOSがお望みなんだい？OSの設計はそれからだろ？ <br> このスレまだ何も生んでないな… <>
デフォルトの名無しさん<>sage<>02/06/30 01:25<> ライブラリとかもっと上の層で対応した方が楽だし速いし柔軟じゃん。 <br>  <br> なぜわざわざ一番下から… <>
デフォルトの名無しさん<><>02/06/30 01:28<> <a href="../test/read.cgi/tech/1024411711/351" target="_blank">&gt;&gt;351</a> <br> まぁ、『入門書』だから。 <br> 難しいことは無視して平易に多少間違いも含みつつ書いてあるんだろ。 <br> 間違いを知るのも良い勉強になるし。 <br>  <br>  <br> <a href="../test/read.cgi/tech/1024411711/352" target="_blank">&gt;&gt;352</a> <br> とりあえず、『OSの目的』が無いと始まらないんだよな。 <br> UNIXは『ゲームを動かしたいんだ』って動機があったし、 <br> Windowsは『PC/ATで動くMacが欲しかったんだ』って動機がある。 <br>  <br> とりあえず『どういうのが欲しいのか』が無いとね。 <br>  <>
デフォルトの名無しさん<>sage<>02/06/30 01:34<> <a href="../test/read.cgi/tech/1024411711/344" target="_blank">&gt;&gt;344</a> <br> 文字列の扱いぐらいCの標準関数でも十分汎用性があるが。 <br>  <br> 本来のOSの役目とは共通のCPUで動くアプリケーションが個別に作成し <br> 呼び出していたI/O、メモリブロックの確保（ヒープ）等に対して <br> 共通のインターフェースを提供するというもの。 <br> これがいわゆるシステムコールというやつだ。 <br> あんたが言ってるのは理想論であり、大企業が作っているにもかかわらず <br> 未だに使える次元で実現していないVMと同じ物を作るということである。 <br> 結果としてCPUのパフォーマンスに支障をきたすOSではいらない物となる。 <br> 少しでもOSのコードを見たことがある人なら知っていると思うが <br> 速度を上げるために内部は関数ポインタの塊である。 <br>  <br>  <br>  <>
デフォルトの名無しさん<>sage<>02/06/30 01:38<> <a href="../test/read.cgi/tech/1024411711/353" target="_blank">&gt;&gt;353</a> <br> Just for fun. <br>  <>
デフォルトの名無しさん<><>02/06/30 01:42<> <a href="../test/read.cgi/tech/1024411711/355" target="_blank">&gt;&gt;355</a> <br> ＞文字列の扱いぐらいCの標準関数でも十分汎用性があるが。 <br> そうかい？ <br>  <br> あ <br> を一文字出したいんだけど、MS-DOS（英語版）で。 <br>  <br>  <br> 言語レベルでは仕様までは規定してないよ。 <br> システム環境を規定しているのは実質的にOS。 <br>  <>
デフォルトの名無しさん<>sage<>02/06/30 01:43<> あ〜あまた始まった… <>
デフォルトの名無しさん<><>02/06/30 01:49<> ノイマン型のコンピュータの講釈をするのは知識不足でアレだけど、 <br> 基礎的な事に限って言えば、処理装置と記憶装置等の５大装置があれば良い。 <br>  <br> ハードウェアでこれを実現するか、概ねソフトウェアでハードウェアは基礎的な <br> 部分にとどめるかは好きにして良いんだよ。 <br> OSが提供するメモリをCPUのMMUでやろうとすれば、高速だがCPUによって変わる。 <br> OSが独自にMMUを構築すれば、低速だがCPUが変わろうが動作する。 <br>  <br> そういうことなんだよ。 <>
デフォルトの名無しさん<>sage<>02/06/30 01:49<> ひげぽん氏よ、もう少し方向性を明確にしたらどうだい？ <br> でないと、不明瞭なまま話がどんどん広がってめちゃくちゃになってしまうよ <>
デフォルトの名無しさん<>sage<>02/06/30 01:53<> <a href="../test/read.cgi/tech/1024411711/357" target="_blank">&gt;&gt;357</a> <br> おいおい、それを実現するのはOSじゃないよ。 <br> 普通は言語サブセットだったり、他のOS配下にあるモジュールだって。 <>
デフォルトの名無しさん<>sage<>02/06/30 01:54<> <a href="../test/read.cgi/tech/1024411711/360" target="_blank">&gt;&gt;360</a> <br> あのさぁ、おまえらが勝手に持ち上げているだけで、 <br> ひげぽんは「とりあえず」習作としてOSを作って「みたい」というだけだろ <br> いきなり仕様がどうだって話してもしょうがない。 <br>  <>
デフォルトの名無しさん<>sage<>02/06/30 01:56<> <a href="../test/read.cgi/tech/1024411711/357" target="_blank">&gt;&gt;357</a> <br> あんたが言っているのは&lt;stdio.h&gt;。 <br> 俺が言ってるのは&lt;string.h&gt;。 <br> printf等は出力が絡むのでOSのwiteを使うことになる。 <br> 文字列の連結、評価であれば問題ない。 <br> OSが無くても使える。実際使っている。 <br> あとmath.hもつかえる。 <>
242<>sage<>02/06/30 02:02<> ひげぽん氏は、いろいろな意味で偉いな。 <br> がんばってくれ。 <br>  <br> <a href="../test/read.cgi/tech/1024411711/252" target="_blank">&gt;&gt;252</a>に関してだけど。 <br> プログラムがシステムコールを使っていても、(3)のようになるのかな？ <br> システムコールってのはOSへのサービスの要求だよね。 <br>  <br> あ、特に返レスは不要だけどね。 <>
デフォルトの名無しさん<><>02/06/30 02:03<> <a href="../test/read.cgi/tech/1024411711/361" target="_blank">&gt;&gt;361</a> <br> おいおい。 <br> OSの定義わかって話してる？ <br>  <br> あんたが言ってるのはカーネルだよ。 <br>  <>
デフォルトの名無しさん<>sage<>02/06/30 02:07<> <a href="../test/read.cgi/tech/1024411711/357" target="_blank">&gt;&gt;357</a> <br> 内部表現と外部表現の違いについて小一時間勉強してこい <>
デフォルトの名無しさん<><>02/06/30 02:07<> <a href="../test/read.cgi/tech/1024411711/363" target="_blank">&gt;&gt;363</a> <br> OSの話してるの。 <br>  <br> 別に、C言語の仕様じゃ文字列の扱いについて規定してない。 <br> ”あ”が文字コードの何番かであるかも規定してない。 <br>  <>
デフォルトの名無しさん<>sage<>02/06/30 02:11<> ＯＳ非標準のコンソールドライバかもしれん（ｗ <>
デフォルトの名無しさん<><>02/06/30 02:11<> <a href="../test/read.cgi/tech/1024411711/366" target="_blank">&gt;&gt;366</a> <br> それは関係ないな。 <br> 文字列のテーブルを管理してるのはOS。C言語じゃない。 <br>  <br> OSの基礎を小一時間勉強しろよ。（ｗ <br>  <>
デフォルトの名無しさん<><>02/06/30 02:12<> http://www.reactos.com/ <>
デフォルトの名無しさん<><>02/06/30 02:13<> で、１はx86用カーネル組みたいの？ <br>  <>
デフォルトの名無しさん<>sage<>02/06/30 02:13<> <a href="../test/read.cgi/tech/1024411711/369" target="_blank">&gt;&gt;369</a> <br> だから、文字列ってなんだよ？ <br> パスカル文字列とか、Cの文字列とか <br> それこそ、アプリケーション定義による独自の文字列とかがあって、 <br> OSが規定するべき物じゃない。 <>
＠<><>02/06/30 02:14<> ＯＳよりもオープンソースのゲームって出来ない？ <>
372<>sage<>02/06/30 02:15<> &gt;”あ”が文字コードの何番かであるかも規定してない <br>  <br> この場合、OSが規定しているのは文字列ではなく、キャラクタセットじゃん。 <br>  <>
デフォルトの名無しさん<>sage<>02/06/30 02:16<> どんな文字でもゴリゴリ描いちまえば俺の勝ち <>
デフォルトの名無しさん<><>02/06/30 02:18<> <a href="../test/read.cgi/tech/1024411711/372" target="_blank">&gt;&gt;372</a> <br> ああ。文字、文字。 <br>  <>
デフォルトの名無しさん<>sage<>02/06/30 02:18<> DOSはキャラクターセットの定義と$で終わる文字列のコンソール出力のファンクションリクエストを提供していますが。 <>
デフォルトの名無しさん<><>02/06/30 02:19<> <a href="../test/read.cgi/tech/1024411711/734" target="_blank">&gt;&gt;734</a> <br> キャラクタセット＝文字セット <br>  <>
デフォルトの名無しさん<>sage<>02/06/30 02:20<> <a href="../test/read.cgi/tech/1024411711/373" target="_blank">&gt;&gt;373</a> <br> nethackとかそうじゃないっけ？ <>
372<>sage<>02/06/30 02:20<> <a href="../test/read.cgi/tech/1024411711/378" target="_blank">&gt;&gt;378</a> <br> 文字セットでも良いけど、文字セットは文字列じゃないぞ <>
デフォルトの名無しさん<>sage<>02/06/30 02:21<> 上の言い争いが全部自作自演だたら(･∀･)ﾜﾗｴﾙ!! <>
デフォルトの名無しさん<>sage<>02/06/30 02:24<> 拘泥 <>
デフォルトの名無しさん<>sage<>02/06/30 02:25<> <a href="../test/read.cgi/tech/1024411711/367" target="_blank">&gt;&gt;367</a> <br> そんな事ぐらい判っているが。 <br>  <br> M$がシフトJISでUNIXはEUCが標準文字コードだろ。 <br> 俺が言いたいのはつまりC言語でで'A'とすればそれはどんな処理系でも <br> 文字コードは別にしろAとして扱われるということだ。 <br> そんなことよりOSとして重要な機能は入出力機器への共通の抽象化された <br> 命令やnew,malloc等でのメモリブロックの確保だと思うのが。 <br> 別にどうでもいいので俺は上げない。 <br>  <>
デフォルトの名無しさん<>sage<>02/06/30 02:26<> なんかＯＳとは「どうあるべき」っていう人と <br> 「どうやって作るの」っていう人が戦ったるみたい。 <br>  <br> 個人的には、ここで必要なのは「どうやって作るの」の意見が重要そうな気がする・・・ <br>  <>
デフォルトの名無しさん<>sage<>02/06/30 02:38<> <a href="../test/read.cgi/tech/1024411711/383" target="_blank">&gt;&gt;383</a> <br> あ？　標準がShift_JISだったUNIXもあるし、最近だとUTF-8つーこともあるが？ <br> インストール時に選択できるとかな。 <>
デフォルトの名無しさん<>sage<>02/06/30 02:39<> <a href="../test/read.cgi/tech/1024411711/252" target="_blank">&gt;&gt;252</a> のことを x86 でやろうとしたら、「バイナリ実行イメージ」てのはどうやって作るんでつか？ <br> NE とか PE、MZ、ELF じゃダメっすよね？いわゆる com 形式でいいんでつか？ <>
デフォルトの名無しさん<>sage<>02/06/30 02:44<> COM形式で良い。 <br> 16bitコンパイラとかで実行ファイルを作り、 <br> exe2binとかでバイナリイメージにして書き込む。 <br> プロテクトモードへの移行はローダーがやってもいいし、お好きにどうぞ。 <>
デフォルトの名無しさん<>sage<>02/06/30 02:50<> 通りすがりで申し訳ないが、 <br> なんでOSのスレで文字列とかで争ってるんだろう・・・？ <br>  <br> ちなみに俺は　<a href="../test/read.cgi/tech/1024411711/311" target="_blank">&gt;&gt;311</a> に同意。 <br> タスク（プロセス）をどうやって実現しているか、というのは <br> なかなか面白いと思う。 <>
デフォルトの名無しさん<>sage<>02/06/30 02:58<> <a href="../test/read.cgi/tech/1024411711/387" target="_blank">&gt;&gt;387</a> thx 今度やってみます。 <br> あと、全くライブラリ使っていなければオブジェクトフェイルのままでもOKでつか？ <>
デフォルトの名無しさん<>sage<>02/06/30 03:00<> <a href="../test/read.cgi/tech/1024411711/389" target="_blank">&gt;&gt;389</a> <br> ダメ。 <br> オブジェクトファイルが実行可能イメージである保証はないし。 <>
デフォルトの名無しさん<>sage <>02/06/30 03:07<> <a href="../test/read.cgi/tech/1024411711/390" target="_blank">&gt;&gt;390</a> そうでしたか、、ども。 <>
デフォルトの名無しさん<>sage<>02/06/30 03:12<> 32bitコンパイラはつかえないんでつか？ <>
デフォルトの名無しさん<>sage<>02/06/30 03:22<> 使えない <>
デフォルトの名無しさん<>sage<>02/06/30 04:37<> 昔、S-OSというOSモドキがあったの覚えてます？ <br>  <br> あれすごく面白かったよね <>
デフォルトの名無しさん<>sage<>02/06/30 04:56<> それじゃあ32bitOSはどうやって動いてるんですか？ <br>  <br> １．まず16bit実行ファイルを起動 <br> ２．16bit実行ファイルが32bit実行ファイルのための環境を整える <br> ３．32bit実行ファイルが起動 <br> ４．32bit実行ファイルが32bitOSのための環境を整える <br> ５．32bitOSが起動 <br>  <br> ？ <br>  <br> はっ、これが「ぶーとしーくぇんす」というやつでは・・・ <>
デフォルトの名無しさん<>sage<>02/06/30 05:04<> <a href="../test/read.cgi/tech/1024411711/395" target="_blank">&gt;&gt;395</a> <br>  <>
デフォルトの名無しさん<>sage<>02/06/30 05:50<> <a href="../test/read.cgi/tech/1024411711/394" target="_blank">&gt;&gt;394</a> <br> Oh!MZ？だっけ？ <>
デフォルトの名無しさん<>sage<>02/06/30 11:24<> <a href="../test/read.cgi/tech/1024411711/340" target="_blank">&gt;&gt;340</a> <br> &gt; 明らかに特別なプログラムだろ？ <br> 素人さんかな ? だったら、黙ってた方がいいよ。 <>
デフォルトの名無しさん<>sage<>02/06/30 11:44<> <a href="../test/read.cgi/tech/1024411711/398" target="_blank">&gt;&gt;398</a> <br> そんなの蒸し返すなよ... <>
デフォルトの名無しさん<><>02/06/30 12:25<> <a href="../test/read.cgi/tech/1024411711/395" target="_blank">&gt;&gt;395</a>  <br>  x86の場合、16bitのモードから32bitモードに切り替えるんじゃなかったっけ？  <br>  途中で。DOSでもWindowsでも動くようになってるはず。  <br>  リアルモードとか仮想86モードとかそういう複雑な構成だった気がする。  <br>  元々、x86って、MS製OSを前提にしてる設計だからなぁ。  <br>  WINTEL同盟以降、MSの要求を受けてCPU設計してるらしいし。  <br>    <br>    <br>  32bitリアルモードで初期化するにはどうしたら良いんだろ？  <br>    <br>   <>
デフォルトの名無しさん<>sage<>02/06/30 12:45<> 32bitリアルモードってなに？ <>
デフォルトの名無しさん<><>02/06/30 12:54<> （・∀・）ｼﾗﾝ <>
デフォルトの名無しさん<><>02/06/30 13:04<> protected: (・∀・)mode!! <>
デフォルトの名無しさん<><>02/06/30 13:20<> 何でプロテクトやねん!! <br>  <>
デフォルトの名無しさん<>sage<>02/06/30 13:34<> （・∀・）ｼﾗﾝ  <>
デフォルトの名無しさん<><>02/06/30 13:34<> メモリ保護って事か？ <br>  <br> Windowsカーネルは保護されてねーじゃん。どういうことだよ。 <br>  <>
デフォルトの名無しさん<><>02/06/30 13:35<> （・∀・）ｼﾗﾝ <>
デフォルトの名無しさん<><>02/06/30 13:38<> （ﾟДﾟ)ﾊｱ? <br>  <>
デフォルトの名無しさん<><>02/06/30 13:39<> （ﾟДﾟ)ﾊｱ? <br> （ﾟДﾟ)ﾊｱ? <br> （ﾟДﾟ)ﾊｱ? <br> （ﾟДﾟ)ﾊｱ? <br> （ﾟДﾟ)ﾊｱ? <br> （ﾟДﾟ)ﾊｱ? <br> （ﾟДﾟ)ﾊｱ? <br> （ﾟДﾟ)ﾊｱ? <br>  <>
デフォルトの名無しさん<><>02/06/30 14:16<> つまり、Windowsはx86を使いこなせてないという事で良いですね。 <>
仕様書無しさん<>sage<>02/06/30 14:29<> <a href="../test/read.cgi/tech/1024411711/410" target="_blank">&gt;&gt;410</a> <br> セグメントを殆ど使ってないLinuxよりはWindowsの方が386の <br> 機能を活用してるように思うけど、どうなんだろう？ <>
デフォルトの名無しさん<><>02/06/30 15:07<> 安定しないで数時間で落ちるOSと、安定してて数十日はもつOSと、どっちが良い？ <br>  <>
デフォルトの名無しさん<>sage<>02/06/30 15:08<> 安定してて数百日はもつOS <>
デフォルトの名無しさん<><>02/06/30 15:10<> <a href="../test/read.cgi/tech/1024411711/411" target="_blank">&gt;&gt;411</a> <br> なぜそこでlinuxが出てくるのか小一時間 <>
デフォルトの名無しさん<>sage<>02/06/30 15:11<> 49日毎に確実に落ちるOSと、うまくいけば数百日持つけどハード <br> が何も使えないOS、どちらが良い？ <br>  <>
デフォルトの名無しさん<><>02/06/30 15:12<> <a href="../test/read.cgi/tech/1024411711/413" target="_blank">&gt;&gt;413</a> <br> FreeBSDなら98日という記録をマークすますた。 <br>  <>
デフォルトの名無しさん<>sage<>02/06/30 15:13<> <a href="../test/read.cgi/tech/1024411711/415" target="_blank">&gt;&gt;415</a> <br> 不正な処理で４９日持たないわなな <>
暴走すますた<>sage<>02/06/30 15:15<> ハードが何も使えないOS <br> ハードが何も使えないOS <br> ハードが何も使えないOS <br> ハードが何も使えないOS <br> ハードが何も使えないOS <br> ハードが何も使えないOS <br> ハードが何も使えないOS <br> ハードが何も使えないOS <br> ハードが何も使えないOS <br> ハードが何も使えないOS <br> ハードが何も使えないOS <br> ハードが何も使えないOS <br> ハードが何も使えないOS <br> ハードが何も使えないOS <br> ハードが何も使えないOS <br> ハードが何も使えないOS <br> ハードが何も使えないOS <br> ・・・ <>
デフォルトの名無しさん<>sage<>02/06/30 15:15<> <a href="../test/read.cgi/tech/1024411711/415" target="_blank">&gt;&gt;415</a> <br> 49日があるのはWindows95だけだっけ？ <br> NT系は大丈夫だっけ？ <br> どちらにしろ9x系はだめだね。 <br> NT系がいいよ。2000ならハードもかなり使えるし。 <>
デフォルトの名無しさん<>sage<>02/06/30 15:18<> DOSはマイクロカーネル <>
デフォルトの名無しさん<>sage<>02/06/30 15:21<> ケンタッキーフライドチキンを食いたくなった。 <>
デフォルトの名無しさん<><>02/06/30 15:21<> <a href="../test/read.cgi/tech/1024411711/419" target="_blank">&gt;&gt;419</a> <br> カーネル保護されてねーOSが49日持つかよ。 <br> どうせ、PRO串とかDNSとかWINSとかファイルサーバとか限定用途なんだろ？ <br>  <br> これくらい一台のPentium PCで出来るはずの事だぞ。 <br> 「おい！サーバが、サーバが盗まれたぞ！」 <br> 「一台にまとめたんです。何でもできるんですよ。」 <br>  <>
デフォルトの名無しさん<>sage<>02/06/30 15:23<> <a href="../test/read.cgi/tech/1024411711/422" target="_blank">&gt;&gt;422</a> <br> 49日の意味知らないだろ。 <>
422<>sage<>02/06/30 15:30<> <a href="../test/read.cgi/tech/1024411711/423" target="_blank">&gt;&gt;423</a> <br> 起動合計時間処理がどうたらとか聞いたなぁ。 <br> 興味ないんで突っ込まなかったが。 <br>  <br> 第一、Windows95系で49日持たせる用途なんてねーし。（ｗ <br>  <>
デフォルトの名無しさん<>sage<>02/06/30 15:31<> NT系で十分 <>
422<><>02/06/30 15:36<> 49day= 1176 hour = 70560 minute =  4233600 second = 4,233,600,000 ms <br>  <br> つー事かい？ <>
デフォルトの名無しさん<>sage<>02/06/30 15:41<> 人間はOSですか？ <>
デフォルトの名無しさん<>sage<>02/06/30 15:58<> win95はパッチがあるよ＞49日 <br>  <br> パッチ当てても49日も動かさないけど（ｗ <>
ひげぽん<><>02/06/30 16:16<> はじめて読む486 <br> 第5章セグメントまで読み終わりました。 <br> とりあえずこれを読めと薦めてくれた人の気持ちが分かりました。 <br> x86系CPUで動くOSを作るうえで必要な基礎知識が書いてありました。 <br>  <br> 例) <br> プロテクトモードとリアルモード <br> レジスタとは？ <br> セグメントとは? <br> MMUによるアドレス変換と仮想記憶 <br>  <br> ただしアセンブリ言語のことは、あまり書かれていないので <br> これを読んでHello World は書けない･･･ <br>  <br> さあ頑張ってHelloWorld 書くぞ。 <br>  <br>  <br>  <>
デフォルトの名無しさん<>sage<>02/06/30 16:25<> <a href="../test/read.cgi/tech/1024411711/422" target="_blank">&gt;&gt;422</a> <br> &gt; カーネル保護されてねーOSが49日持つかよ。 <br>  <br> (ﾟдﾟ)ﾊｧ？ <>
デフォルトの名無しさん<>sage<>02/06/30 16:31<> 初めて読むItanium、蒲池先生書いてくれないかなー <>
デフォルトの名無しさん<><>02/06/30 17:52<> <a href="../test/read.cgi/tech/1024411711/429" target="_blank">&gt;&gt;429</a> <br> アセンブラでHello Worldを書こうと思ったら <br> BIOSの呼び出しかVRAMへの直接書込が必要になる。 <br> これにはアセンブラの知識だけじゃなくて、 <br> ハードウェア(のアーキテクチャ)に固有のBIOSなどの知識が必要。 <br> アセンブラの知識だけならこのスレの最初の方で出ていた <br> インテルの純正マニュアル(pdf)と各種入門サイトで一通りカバーできる。 <br> BIOSなどについてはFreeDOSのソースを見るといいかも。 <>
ひげぽん<><>02/06/30 17:54<> アセンブラ環境をとりあえず整えてみました。 <br> OS:WindowsXP Pro <br> エディタ:Meadow 1.14 <br> アセンブラ:nasm for win32 <br> リンカ:alink <br>  <br> 上記環境下で、webで拾ってきた↓をアセンブル、リンクしました。 <br> segment&nbsp;code <br>  <br> ..start: <br> ;各セグメントなどの初期設定 <br> mov&nbsp;ax,data <br> mov&nbsp;ds,ax <br> mov&nbsp;ax,stack <br> mov&nbsp;ss,ax <br> mov&nbsp;sp,stacktop <br>  <br> ;文字列の表示 <br> mov&nbsp;dx,hello <br> mov&nbsp;ah,09h <br> int&nbsp;21h <br>  <br> ;終了 <br> mov&nbsp;ax,4c00h <br> int&nbsp;21h <br>  <br> segment&nbsp;data <br> hello:&nbsp;db&nbsp;'Hello&nbsp;World',13,10,'$' <br>  <br> segment&nbsp;stack&nbsp;stack <br> resb&nbsp;64 <br> stacktop: <br>  <br> 実行も成功! <br>  <br> どなたかアセンブリ言語の入門に <br> 最適なサイトを紹介していただけませんか？ <br>  <>
デフォルトの名無しさん<>sage<>02/06/30 18:02<> アセンブラの入門サイト。 <br>  <br> http://www.d1.dion.ne.jp/~ecb/assembler/assembler00.html <br> http://www.geocities.co.jp/SiliconValley/9979/asmhead.html <>
ひげぽん<><>02/06/30 18:21<> <a href="../test/read.cgi/tech/1024411711/432" target="_blank">&gt;&gt;432</a> <br> 入れ違いになっちゃいましたね。 <br> BIOS呼び出しとVRAMへの直接書き込みどちらが、 <br> 入門者向きでしょうか？ <br> また、メジャーなOSはどちらを選択しているのでしょうか？ <br>  <>
デフォルトの名無しさん<>sage<>02/06/30 18:23<> <a href="../test/read.cgi/tech/1024411711/435" target="_blank">&gt;&gt;435</a> <br> OSを作るなら当然前者ではありえない。 <br> ただ、前者を使ったモジュールもあるべき。 <br> 最初は前者で書いて、あとから後者を追加すればいい。 <>
俺様のブックマーク<>sage<>02/06/30 18:24<> http://www.capricorn.cse.kyutech.ac.jp/~tate/tako/80x86.html <br> http://hp.vector.co.jp/authors/VA003720/lpproj/int10h/int10h.htm <br> http://ha3.seikyou.ne.jp/home/Joyit/asm/x86arc.html <br> http://www.geocities.co.jp/SiliconValley-PaloAlto/5989/programming.html <>
ひげぽん<><>02/06/30 18:30<> <a href="../test/read.cgi/tech/1024411711/434" target="_blank">&gt;&gt;434</a> <br> <a href="../test/read.cgi/tech/1024411711/437" target="_blank">&gt;&gt;437</a> <br> ありがとう。 <br>  <br> <a href="../test/read.cgi/tech/1024411711/436" target="_blank">&gt;&gt;436</a> <br> よく考えればその通りですね。 <br> まずは、BIOS経由で挑戦してみます。 <>
ひげぽん<><>02/06/30 19:00<> インターフェース 2002 7号に <br> BIOS版「Hello, World」プログラムの作成という記事 <br> がありました。 <br> フロッピーからブートしてHello, Worldと <br> 出力してみようという内容です。 <br>  <br> これだ！と思ったものの。全部GNUツールでやってる･･･ <br> 初心者のひげぽんには、これを読み替えて <br> NASM on Windwosで実践する力がまだありません･･･ <br> もっと勉強しないと。 <br>  <>
デフォルトの名無しさん<>sage<>02/06/30 19:17<> ここで５年間問いつづけけながらＯＳ作る気か。 <br> くだらん質問する暇があったらまず本を読め <br> １００冊読んでから出直せ。 <br> ネタにしてもつまらん。 <>
デフォルトの名無しさん<>sage<>02/06/30 19:21<> FDベースでIPLを書いてブートさせてBIOSを一通り叩くところまで行けば <br> 後は書籍と試行錯誤のセルフラーニングでどうにかなるだろ。 <br> そこまではおっかなびっくりで質問が多くなるのも無理ないと思うよ。 <>
デフォルトの名無しさん<>sage<>02/06/30 19:24<> <a href="../test/read.cgi/tech/1024411711/440" target="_blank">&gt;&gt;440</a> <br> そんな駄目レスを5年間続けながら <br> 無駄に人生を送るよりは良いんじゃない？ <br> 本を読めって？ <br> それはお前だろ <>
デフォルトの名無しさん<>sage<>02/06/30 19:28<> <a href="../test/read.cgi/tech/1024411711/440" target="_blank">&gt;&gt;440</a>をいじめないでください。 <br> 弱い者いじめなんて、男のすることじゃないです。 <>
ひげぽん<><>02/06/30 19:31<> <a href="../test/read.cgi/tech/1024411711/441" target="_blank">&gt;&gt;441</a> <br> ご迷惑をおかけいたします。 <br> &gt;FDベースでIPLを書いてブートさせてBIOSを一通り叩くところまで行けば  <br> &gt;後は書籍と試行錯誤のセルフラーニングでどうにかなるだろ。  <br> &gt;そこまではおっかなびっくりで質問が多くなるのも無理ないと思うよ。  <br> 現在の状況は、基本となる雛形も無い状態なので <br> 良い意味でマネできる素材があればと思っています。 <br> Webで探しているのですが今のところなかなか良いのが <br> 見つからないです。 <br>  <br> 勉強の過程を同じような志の人たちにフィードバックできたら <br> と考えています。 <>
今更だが・・・<>sage<>02/06/30 20:10<> <a href="../test/read.cgi/tech/1024411711/25-32" target="_blank">&gt;&gt;25-32</a> <br> ・・・ <>
タ僕 </b>◆njaj0FGY <b><><>02/06/30 20:11<> <a href="../test/read.cgi/tech/1024411711/444" target="_blank">&gt;&gt;444</a> <br> それならSunriseOSがオススメ。 <br> ソースがべらぼうに読みやすい。 <>
デフォルトの名無しさん<>sage<>02/06/30 20:20<> <a href="../test/read.cgi/tech/1024411711/444" target="_blank">&gt;&gt;444</a> <br> ソース読め馬鹿 <>
ひげぽん<><>02/06/30 20:20<> とりあえず。 <br> ↓ <br> ■アセンブラ <br> &nbsp;&nbsp;&nbsp;&nbsp;http://www.csl.sony.co.jp/person/fnami/asm.htm <br> &nbsp;&nbsp;&nbsp;&nbsp;http://finito-web.com/silphire/linux/linuxasm.htm <br> &nbsp;&nbsp;&nbsp;&nbsp;http://isweb31.infoseek.co.jp/computer/maccyo/assembler/assembly.html <br> &nbsp;&nbsp;&nbsp;&nbsp;http://www.geocities.co.jp/SiliconValley-PaloAlto/5989/programming.html <br> &nbsp;&nbsp;&nbsp;&nbsp;http://ha3.seikyou.ne.jp/home/Joyit/asm/x86arc.html <br> &nbsp;&nbsp;&nbsp;&nbsp;http://www.d1.dion.ne.jp/~ecb/assembler/assembler00.html <br> &nbsp;&nbsp;&nbsp;&nbsp; <br> ■ブート <br> &nbsp;&nbsp;&nbsp;&nbsp;http://www.tkcity.net/~nobusan/boot/boot.html <br>  <br> ■minix <br> &nbsp;&nbsp;&nbsp;&nbsp;http://plaza4.mbn.or.jp/~annchan/minix/main.html <br>  <br> ■その他 <br> &nbsp;&nbsp;&nbsp;&nbsp;http://hp.vector.co.jp/authors/VA003720/lpproj/int10h/int10h.htm <br> &nbsp;&nbsp;&nbsp;&nbsp;http://ime.nu/www.intel.co.jp/jp/developer/design/litcentr/index.htm <br> &nbsp;&nbsp;&nbsp;&nbsp; <br> ■参考書 <br> &nbsp;&nbsp;&nbsp;&nbsp;オペレーティングシステム＜第二版＞&nbsp;設計と理論およびMINIXによる実装」 <br> &nbsp;&nbsp;&nbsp;&nbsp;著：A.S.タネンバウム&nbsp;＋&nbsp;A.S.ウッドハル <br> &nbsp;&nbsp;&nbsp;&nbsp;訳：千輝&nbsp;順子 <br> &nbsp;&nbsp;&nbsp;&nbsp;監修：今泉&nbsp;貴史 <br> &nbsp;&nbsp;&nbsp;&nbsp;プレンティスホール出版&nbsp;￥8,800 <br> &nbsp;&nbsp;&nbsp;&nbsp; <br> &nbsp;&nbsp;&nbsp;&nbsp;はじめて読む486 <br> &nbsp;&nbsp;&nbsp;&nbsp;著：蒲池&nbsp;輝尚 <br> &nbsp;&nbsp;&nbsp;&nbsp;アスキー出版局 <br>  <>
デフォルトの名無しさん<><>02/06/30 20:23<> <a href="../test/read.cgi/tech/1024411711/447" target="_blank">&gt;&gt;447</a> <br> は無視していきましょう。 <>
デフォルトの名無しさん<>sage<>02/06/30 20:43<> <a href="../test/read.cgi/tech/1024411711/1" target="_blank">&gt;&gt;1</a> <br> は無視していきましょう。 <>
デフォルトの名無しさん<>sage<>02/06/30 20:45<> 447=450 <br> はきっと寂しいんだよ。 <br> みんな相手してあげて。 <>
457(!=450)<>sage<>02/06/30 20:52<> つか、まじめにスレ読もうとしたおれから言わせてもらうと、 <br> うざいんですけど。 <br>  <br> 何で検索しないの？ <br> 質問の方が答えるの早いから？ <br>  <br> なめとるよ。 <>
デフォルトの名無しさん<>sage<>02/06/30 20:55<> <a href="../test/read.cgi/tech/1024411711/452" target="_blank">&gt;&gt;452</a> <br> ひげぽんが結構教えて君なのは確かだな。 <br> が、指摘された参考図書に実際に取り組んでいるし <br> テストコードも書いたりしているから前向きではある。 <br> もうちょっとなま暖かい目で見守ってやっていい。 <>
デフォルトの名無しさん<>sage<>02/06/30 20:57<> 457?? <>
デフォルトの名無しさん<>sage<>02/06/30 20:59<> 発言予告だろ、とマジレスの振りをしてみるテスト。 <>
デフォルトの名無しさん<>sage<>02/06/30 21:03<> <a href="../test/read.cgi/tech/1024411711/453" target="_blank">&gt;&gt;453</a> <br> 教えて君ていうか自作自演君では... <>
デフォルトの名無しさん<>sage<>02/06/30 21:05<> ひげぽん結構がんばってるじゃん。 <br> よく見ると質問もWebで検索して見つかる種類ではない場合が多い <br> と思うんだけど。 <br> <a href="../test/read.cgi/tech/1024411711/252" target="_blank">&gt;&gt;252</a> <br> とかそんな感じじゃん。 <br> 勉強した上で出てきた疑問質問なら良いと思うよ。 <br>  <br>  <br>  <>
デフォルトの名無しさん<>sage<>02/06/30 21:08<> linuxとかのソースとか。 <>
デフォルトの名無しさん<>sage<>02/06/30 21:18<> <a href="../test/read.cgi/tech/1024411711/457" target="_blank">&gt;&gt;457</a> <br> 知ってる事しか質問してないように見える. <>
ひげぽん<><>02/06/30 21:27<> 私の質問と、質問の仕方によりご迷惑をおかけいたしております。 <br>  <br> 以後以下のことに気をつけます。 <br> ・今でも十分調べてから、質問をしていますが <br>   WEBで調べて分かるものは、自分で調べます。 <br> ・自分で調べたものについても、出来る限り <br>   ここに書き込むようにします。 <br>  <br> どうぞよろしくお願いいたします。 <br>  <>
デフォルトの名無しさん<>sage<>02/06/30 21:44<> <a href="../test/read.cgi/tech/1024411711/460" target="_blank">&gt;&gt;460</a> <br> あまり気にしなくていいと思ﾜﾚ <br> 気にせず、いいOSをﾂｸﾃｸﾚ <>
デフォルトの名無しさん<>sage<>02/06/30 22:08<> <a href="../test/read.cgi/tech/1024411711/452" target="_blank">&gt;&gt;452</a> <br> ウザイと思ったら、来ないでね。言いたいのは、ただそれだけ。 <>
ひげぽん<>sage<>02/06/30 22:24<> <a href="../test/read.cgi/tech/1024411711/446" target="_blank">&gt;&gt;446</a> <br> 446さん。 <br> 遅くなりましたが、ありがとうございます。 <br> 実際にSunriseOS http://www.geocities.com/sunriseos/ を <br> フロッピーからブートしてみました。 <br>  <br> アセンブラもNASM用に書かれているので大変参考になります。 <br> しばらくはこのソースを研究いたします。 <br>  <br>  <>
デフォルトの名無しさん<><>02/06/30 22:28<> <a href="../test/read.cgi/tech/1024411711/460" target="_blank">&gt;&gt;460</a> <br> ココはOSを作ろうとする人のための質問スレなんだから何でも聞いて良いんじゃない？ <br> オープンに何でも話そうよ。 <>
デフォルトの名無しさん<>sage<>02/06/30 22:29<> 文字出力するだけでもVGAを叩かなくちゃいけないんですか? <>
デフォルトの名無しさん<>sage<>02/06/30 23:04<> ひげぽんが出てこないと妄想君が議論始めるから <br> ひげぽんは気軽に出てくるように。 <>
デフォルトの名無しさん<><>02/06/30 23:24<> たまに出てきてね <>
デフォルトの名無しさん<>sage<>02/07/01 00:57<> うん、次は４年後だね <>
デフォルトの名無しさん<><>02/07/01 01:11<> <a href="../test/read.cgi/tech/1024411711/465" target="_blank">&gt;&gt;465</a> <br> BIOS叩いてもできるけど結局同じこと。 <>
デフォルトの名無しさん<>sage<>02/07/01 03:13<> http://ise-city.no-ip.com/~foo/ <br> ↑これひげぽん？ <>
デフォルトの名無しさん<>sage<>02/07/01 03:35<> <a href="../test/read.cgi/tech/1024411711/436" target="_blank">&gt;&gt;436</a> を読むとBIOSを使うのはあまり良くないようだけど何故なの？ <>
デフォルトの名無しさん<>sage<>02/07/01 03:44<> <a href="../test/read.cgi/tech/1024411711/471" target="_blank">&gt;&gt;471</a> <br> PCのBIOSはプロテクトモードから呼び出せないし再入可能でもない。 <br> リアルモードで動くシングルタスクのOS以外からは使い物にならんよ。 <>
デフォルトの名無しさん<>sage<>02/07/01 04:23<> <a href="../test/read.cgi/tech/1024411711/472" target="_blank">&gt;&gt;472</a> <br> 目から鱗が落ちますた。 <>
デフォルトの名無しさん<><>02/07/01 06:05<> <a href="../test/read.cgi/tech/1024411711/472" target="_blank">&gt;&gt;472</a> <br> ちょっとまて。 <br> そうかといって本格的にOS作り始めたとき山のようにドライバ書かなくちゃならなくなるんじゃ? <br> BIOS叩いてやれば少なくともドライバがないから画面真っ黒とかいうことにはならんと思うが。 <>
デフォルトの名無しさん<>sage<>02/07/01 07:03<> なにをいまさら <>
デフォルトの名無しさん<><>02/07/01 19:41<> <a href="../test/read.cgi/tech/1024411711/474" target="_blank">&gt;&gt;474</a> <br> たうぜん <>
デフォルトの名無しさん<><>02/07/01 19:42<> まいくろかーねるにしようぜ。いい加減。 <>
ひげぽん<><>02/07/01 22:07<> SunriseOSのソースを眺めてちょっとずつ勉強しています。 <br> とりあえず自分なりにコメントを付加してみました。 <br> 15%も理解していないですが・・・ <br> これから理解を深めます <br> osimg.asm　ブート部分 <br>  <>
ひげぽん<><>02/07/01 22:09<>  <br> ;&nbsp;-------------------------------------------------------- <br> ;&nbsp;SunriseOS&nbsp;boot&nbsp;loader&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2001&nbsp;Scherpereel&nbsp;Jelle <br> ;&nbsp;-------------------------------------------------------- <br> ;&nbsp;This&nbsp;code&nbsp;loads&nbsp;the&nbsp;actual&nbsp;kernel&nbsp;in&nbsp;memory&nbsp;and&nbsp;jumps&nbsp;to <br> ;&nbsp;it&nbsp;for&nbsp;execute! <br> ;&nbsp;-------------------------------------------------------- <br> ;&nbsp;It&nbsp;needs&nbsp;to&nbsp;be&nbsp;compiled&nbsp;with&nbsp;NASM <br> ;&nbsp;-------------------------------------------------------- <br> ;&nbsp;ひげぽんが勝手にコメントを追加しました。 <br> ;&nbsp;コメントを和訳したものではありません。 <br> ;&nbsp;コメント&nbsp;ver1.0 <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;org&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;bios&nbsp;read&nbsp;from&nbsp;here&nbsp;■プログラムが0から始まる事を示す <br>  <>
ひげぽん<><>02/07/01 22:11<>  <br>  <br> start: <br>         ;setup the stack <br>         ;we can't allow interrupts while we setup the stack <br>  <br>         cli                     ;disable interrupt   ■外部割込みを禁止する <br>         mov     ax,0x9000       ;put stack at 0x9000 ■汎用レジスタに0x9000をセットする <br>         mov     ss,ax           ;ss=9000             ■セグメントレジスタ(スタックセグメント)にaxの値をセットする <br>         mov     sp,0            ;sp=0000             ■スタックポインタに0をセットする <br>         sti                     ;enable interrupt    ■外部割込みを可能にする <br>  <br>         ;remember the bootdrive information <br>  <br>         mov     [bootdrv],dl    ;■変数boodrvに汎用レジスタ(データレジスタ)dlの値をセットする <br>  <br>         ;load the kernel <br>  <br>         call    load            ;■コードラベルloadを実行 <br>  <br>         ;jump to the loaded program <br>  <br>         mov     ax,0x1000       ;■axに0x1000をセット <br>         mov     es,ax           ;■esにaxをセット <br>         mov     ds,ax           ;■dsにaxをセット <br>         push    ax              ;■スタックaxをpush <br>         mov     ax,0            ;■axに0をセット <br>         push    ax              ;■スタックからaxをpop <br>         retf                    ;■呼び出し元に戻る <br>  <>
ひげぽん<><>02/07/01 22:12<>  <br> ; ------------------------------------------------------- <br> ; functions and data used by the bootstrap program <br> ; ------------------------------------------------------- <br>  <br> ;data <br>  <br> bootdrv     db  0                   ;variable containing the bootdrive <br>  <br>  <br>  <br> ;load kernel from bootdrive <br>  <br> load: <br>         ;reset the diskdrives <br>  <br>         push    ds              ;store DS        ■データセグメントの値をスタックへpush <br>         mov     ax,0            ;select function ■汎用レジスタaxに0をセット <br>         mov     dl,[bootdrv]    ;drive to reset  ■データレジスタに変数bootdrvの値をセット <br>         int     13h             ;reset           ■13hの割り込み処理を行う13h? <br>         pop     ds              ;restore DS      ■スタックからpop <br>         jc      load            ;failed try again■キャリーフラグ?が1のときにラベルへジャンプ <br>  <br> load1: <br>         mov     ax,0x1000       ;es:bx=1000      ■汎用レジスタaxに0x1000 <br>         mov     es,ax           ;                ■エキストラセグメントにaxの値をセット <br>         mov     bx,0            ;                ■bxに0をセット <br>  <br>         ;read disksectors <br>  <br>         mov     ah,2            ;select function     ■ahに2をセット?? <br>         mov     al,10           ;read 10 sectors     ■alに10をセット?? <br>         mov     cx,5            ;cylinder=0,sector=5 ■cxに5をセット <br>         mov     dx,0            ;head=0,drive=0      ■dxに0をセット <br>         int     13h             ;                    ■13hの割り込み処理を行う13h? <br>         jc      load1           ;                    ■キャリーフラグ?が1のときにラベルへジャンプ <br>  <br>         retn                    ;                    ■呼び出し元に戻る <br>  <br>  <br> times 512-($-$$)-2 db 0 <br>         dw  0AA55h <br>  <>
デフォルトの名無しさん<>sage<>02/07/01 22:13<> 大学でOSの作成経験あり↓ <br> http://pc.2ch.net/test/read.cgi/tech/1025441630/116 <>
ひげぽん<><>02/07/01 22:15<> ソースのレイアウトがくずれてしまいました． <br>  <>
デフォルトの名無しさん<><>02/07/01 22:27<> 帰ってきたひげぽん。 <br> おかえりーー <>
ひげぽん<><>02/07/02 00:03<> これから少しずつソースを読んで行こうと思います。 <br> 良いリファレンス、ひげぽんの間違い指摘、アドバイス等ありましたら <br> ぜひ書き込みください。 <br>  <br> まずはこの部分から。 <br> &gt;;setup the stack <br> &gt;;we can't allow interrupts while we setup the stack <br> スタックセットアップをしているらしい。 <br> &gt; <br> &gt;cli　　　　　　　　　　 ;disable interrupt　 ■外部割込みを禁止する <br> ここはOK <br>  <br> &gt;mov　　 ax,0x9000　　　 ;put stack at 0x9000 ■汎用レジスタに0x9000をセットする <br> axに0x9000を入れることにどういう意味があるか？ <br> ssに0x9000をいれるためか？ <br>  <br> &gt;mov　　 ss,ax　　　　　 ;ss=9000　　　　　　 ■セグメントレジスタ(スタックセグメント)にaxの値をセットする <br> mov ss,0x9000とどう違うのか？ <br> またどういう意味があるか？ <br>  <br> &gt;mov　　 sp,0　　　　　　;sp=0000　　　　　　 ■スタックポインタに0をセットする <br> どういう意味があるか？ <br>  <br> &gt;sti　　　　　　　　　　 ;enable interrupt　　■外部割込みを可能にする <br> ここはOK <br>  <br> 勉強が足らないですね。 <br>  <br>  <>
ひげぽん<>sage<>02/07/02 00:06<> 良いリファレンスを探さねばと、痛感しております。 <br> もう英語でもいいから、いいところ無いかなあ。 <>
デフォルトの名無しさん<>sage<>02/07/02 00:16<> スタックはss:spになる。 <br> それだけだろ？ <>
デフォルトの名無しさん<>sage<>02/07/02 00:30<> <a href="../test/read.cgi/tech/1024411711/485" target="_blank">&gt;&gt;485</a> <br> はじめて読む486の最後の方の命令セット一覧見てご覧よ。 <br> セグメントレジスタに即値を mov できないでそ。 <>
ひげぽん<>sage<>02/07/02 00:31<> <a href="../test/read.cgi/tech/1024411711/487" target="_blank">&gt;&gt;487</a> <br> ありがとう <br> axを介しているのはなぜでしょうか？ <br> cli <br> mov ss, 0x9000 <br> mov sp, 0 <br> sti <br> で良い様に見えるのですが何か理由があるのでしょうか。 <>
ひげぽん<>sage<>02/07/02 00:32<> <a href="../test/read.cgi/tech/1024411711/488" target="_blank">&gt;&gt;488</a> <br> ・・・すいません入れ違いになりました。 <br> ありがとう。 <>
デフォルトの名無しさん<><>02/07/02 01:23<> うーん、ひげぴん、がんばってるなぁ <>
デフォルトの名無しさん<> sage<>02/07/02 01:25<> 一般的に、 <br> i++ ; // iに1足す。 <br> みたいなコメントは、かな〜り逝ってよしです。 <>
デフォルトの名無しさん<>sage<>02/07/02 01:29<> とりあえず、アセンブラ初心者はそれで良いんじゃないの？ <br> レジスタの名前は決まっちゃってるんだし、コメントがあっても邪魔じゃないだろ <>
デフォルトの名無しさん<>sage<>02/07/02 01:38<> アセンブラはそれこそ <br>  <br> mov ax,0x9000 <br> mov ss,ax <br>  <br> の様に1つの動作を2〜3の命令の組み合わせで表す事があるから <br>  <br> mov ax,0x9000 ; ssに0x9000を <br> mov ss,ax       ; 入れる <br>  <br> みたいに、その動作単位でコメントを入れると良いかも。 <>
デフォルトの名無しさん<>sage<>02/07/02 01:44<> 0x9000 って数には何か意味がある？ 単にメモリの後の方って事？ <>
デフォルトの名無しさん<>sage<>02/07/02 07:28<> <a href="../test/read.cgi/tech/1024411711/495" target="_blank">&gt;&gt;495</a> <br> ss:spが9000:0000なのでスタックは9000:ffffから使われる。 <br> つまり640KBのケツ。 <>
デフォルトの名無しさん<>sage<>02/07/02 10:31<> ページ違反で落ちないの？ <>
ひげぽん<><>02/07/02 23:44<> &gt;;remember the bootdrive information <br> &gt; <br> &gt;mov&nbsp;&nbsp; [bootdrv],dl&nbsp;&nbsp;;■変数boodrvに汎用レジスタ(データレジスタ)dlの値をセットする <br> 作者のコメントを見るとブートドライブの情報を記憶とあるが <br> dlには、ブートドライブ情報が元から入っているのでしょうか? <br>  <br> &gt;;load the kernel <br> &gt; <br> &gt;call&nbsp;&nbsp;load&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;■コードラベルloadを実行 <br> ここはOK <br>  <br> 以後loadラベルに進みます。 <br>  <>
ひげぽん<><>02/07/02 23:58<> &gt;;load kernel from bootdrive <br> &gt; <br> &gt;load: <br> &gt;　　　　;reset the diskdrives <br> &gt; <br> &gt;　　　　push　　ds　　　　　　　;store DS　　　　■データセグメントの値をスタックへpush <br> このデータセグメントには何らかの値が入っていて、それを保持するために <br> スタックにpushしていると思うのですが、いったい何が入っているのでしょうか? <br>  <br>  <br> &gt;　　　　mov　　 ax,0　　　　　　;select function ■汎用レジスタaxに0をセット <br> ここは本当に意味が分からないです、axに0をセットしているものの、 <br> これ以降どこかでつかっていないように見えるのですが。。。 <br>  <br>  <br> &gt;　　　　mov　　 dl,[bootdrv]　　;drive to reset　■データレジスタに変数bootdrvの値をセット <br> &gt;　　　　int　　 13h　　　　　　 ;reset　　　　　 ■13hの割り込み処理を行う13h? <br> 13h割り込み処理の定義は、どこかで調べればわかると思うので保留。 <br>  <br>  <br> &gt;　　　　pop　　 ds　　　　　　　;restore DS　　　■スタックからpop <br> &gt;　　　　jc　　　load　　　　　　;failed try again■キャリーフラグ?が1のときにラベルへジャンプ <br> kernelのloadが失敗している間はずっとループする？？？ <br>  <br>  <>
デフォルトの名無しさん<> sage<>02/07/03 00:04<> ＞ここは本当に意味が分からないです、axに0をセットしているものの、  <br> ＞これ以降どこかでつかっていないように見えるのですが。。。  <br>  <br> int13hでつかってるんだろ。 <>
デフォルトの名無しさん<>sage<>02/07/03 00:08<> <a href="../test/read.cgi/tech/1024411711/500" target="_blank">&gt;&gt;500</a>さん、すてき！ <br> 天才。まじで。 <>
ひげぽん<><>02/07/03 00:17<> <a href="../test/read.cgi/tech/1024411711/500" target="_blank">&gt;&gt;500</a> さん <br> ありがとう。 <br> これをヒントにいまint 13hを調べております <>
ひげぽん<>sage<>02/07/03 00:22<> とりあえずこんなの見つけました。 <br> INT (16進数) 説明  <br> 10 ビデオサービス  <br> 11 実装されているハードウェアリスト取得  <br> 12 メモリサイズ取得  <br> 13 低レベルディスクサービス  <br> 14 シリアルポートサービス  <br> 15 (予約：さまざまな用途に使われる)  <br> 16 キーボードサービス  <br> 17 プリンタサービス  <br> 18 ROM BASIC 起動  <br> 19 リブート  <br> 1A システムタイム取得  <br> 1B CTRL - BREAK ハンドラ  <br> 1C システムチックカウントタイマー  <br> 1D システムデータ　(ビデオパラメータテーブル)  <br> 1E システムデータ　(ディスクパラメータ)  <br> 1F システムデータ　(8 x 8 グラフィックフォント)  <br>  <>
500<> sage<>02/07/03 00:31<> つーかな、 <br> http://www.cse.iitd.ernet.in/~csu98123/old/home/learn/os/nasmBoot.html <br> くらいはすぐに見つかるだろ。 <>
!ひげぽん<>sage<>02/07/03 00:39<> <a href="../test/read.cgi/tech/1024411711/504" target="_blank">&gt;&gt;504</a>　500さん、あなたは英雄です。 <br> すごすぎます。 <>
ひげぽん<>sage<>02/07/03 00:39<> <a href="../test/read.cgi/tech/1024411711/504" target="_blank">&gt;&gt;504</a> <br> ありがとうございます。 <br> int,13h,axをキーワードにWebをさまよっていました。 <br>  <br> ということでまとめると <br> load: <br> 　　　　;reset the diskdrives <br>  <br> 　　　　push　　ds　　　　　　　;store DS　　　　■データセグメントの値をスタックへpush <br> 　　　　mov　　 ax,0　　　　　　;select function ■ディスクを <br> 　　　　mov　　 dl,[bootdrv]　　;drive to reset　■リセット <br> 　　　　int　　 13h　　　　　　 ;reset　　　　　 ■する <br> 　　　　pop　　 ds　　　　　　　;restore DS　　　■スタックからpop <br> 　　　　jc　　　load　　　　　　;failed try again■キャリーフラグ?が1のときにラベルへジャンプ <>
デフォルトの名無しさん<><>02/07/03 01:55<> ひげぽん応援あげ <br>  <br> (･∀･)っ ｺﾚﾄﾞｰｿﾞ  http://www.ctyme.com/intr/int-13.htm <>
デフォルトの名無しさん<><>02/07/03 01:58<> あと 「Ralf Brown interrupt」 でぐぐれば↑の内容がアーカイブ化 <br> されててDL出来るようになってるとこが見つかると思う。 <>
デフォルトの名無しさん<>sage<>02/07/03 06:43<> <a href="../test/read.cgi/tech/1024411711/507" target="_blank">&gt;&gt;507</a> <a href="../test/read.cgi/tech/1024411711/508" target="_blank">&gt;&gt;508</a> <br> ひげぽんさんじゃないけど、ありがとう。 <br> このスレは勉強になります。 <>
デフォルトの名無しさん<><>02/07/03 09:56<> はじめて読む486のサポートページ  <br>  念のため。  <br>    <br>  http://www.ascii.co.jp/books/support/apc/4-7561-0213-1.html <>
デフォルトの名無しさん<>sage<>02/07/03 10:48<> 調子はどうだひげぽん <br> ローダくらいはできたか <>
ひげぽん<>sage<>02/07/03 21:16<> <a href="../test/read.cgi/tech/1024411711/507" target="_blank">&gt;&gt;507</a> <a href="../test/read.cgi/tech/1024411711/508" target="_blank">&gt;&gt;508</a> <a href="../test/read.cgi/tech/1024411711/510" target="_blank">&gt;&gt;510</a> <br> ありがとう。 <br> はじめて読む486一応読み終わりました。(かなり斜め読み) <br>  <br> 仕事から帰ってから1,2時間しか時間が無いので <br> 進みは遅いですがよろしくお願いいたします。 <br>  <br> ソースレイアウトがくずれるのが、見づらいのですが、 <br> 半角空白を&ｎｂｓｐ;で置き換えるしかないのでしょうか？ <br>  <br>  <>
ひげぽん<>sage<>02/07/03 21:44<> 皆様のご好意により資料が増えましたので <br> コメントを書き換えました。 <br> ;&nbsp;-------------------------------------------------------- <br> ;&nbsp;SunriseOS&nbsp;boot&nbsp;loader&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2001&nbsp;Scherpereel&nbsp;Jelle <br> ;&nbsp;-------------------------------------------------------- <br> ;&nbsp;This&nbsp;code&nbsp;loads&nbsp;the&nbsp;actual&nbsp;kernel&nbsp;in&nbsp;memory&nbsp;and&nbsp;jumps&nbsp;to <br> ;&nbsp;it&nbsp;for&nbsp;execute! <br> ;&nbsp;-------------------------------------------------------- <br> ;&nbsp;It&nbsp;needs&nbsp;to&nbsp;be&nbsp;compiled&nbsp;with&nbsp;NASM <br> ;&nbsp;-------------------------------------------------------- <br> ;&nbsp;ひげぽんが勝手にコメントを追加しました。 <br> ;&nbsp;コメントを和訳したものではありません。 <br> ;&nbsp;インデントに変更を加えました <br> ;&nbsp;コメント&nbsp;ver1.1 <br>  <br> &nbsp;&nbsp;&nbsp;&nbsp;org&nbsp;0&nbsp;;bios&nbsp;read&nbsp;from&nbsp;here&nbsp;■プログラムが0から始まる事を示す <br>  <>
ひげぽん<>sage<>02/07/03 21:45<> start: <br> &nbsp;&nbsp;&nbsp;&nbsp;;setup&nbsp;the&nbsp;stack <br> &nbsp;&nbsp;&nbsp;&nbsp;;we&nbsp;can't&nbsp;allow&nbsp;interrupts&nbsp;while&nbsp;we&nbsp;setup&nbsp;the&nbsp;stack <br>  <br> &nbsp;&nbsp;&nbsp;&nbsp;cli&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;disable&nbsp;interrupt&nbsp;&nbsp;&nbsp;■外部割込みを禁止する <br> &nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;ax,0x9000&nbsp;;put&nbsp;stack&nbsp;at&nbsp;0x9000&nbsp;■スタックを <br> &nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;ss,ax&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;ss=9000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;■9000:0000に <br> &nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;sp,0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;sp=0000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;■設定する <br> &nbsp;&nbsp;&nbsp;&nbsp;sti&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;enable&nbsp;interrupt&nbsp;&nbsp;&nbsp;&nbsp;■外部割込みを可能にする <br>  <br> &nbsp;&nbsp;&nbsp;&nbsp;;remember&nbsp;the&nbsp;bootdrive&nbsp;information <br>  <br> &nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;[bootdrv],dl&nbsp;;■変数boodrvに汎用レジスタ(データレジスタ)dlの値をセットする <br>  <br> &nbsp;&nbsp;&nbsp;&nbsp;;load&nbsp;the&nbsp;kernel <br>  <br> &nbsp;&nbsp;&nbsp;&nbsp;call&nbsp;&nbsp;&nbsp;&nbsp;load&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;■コードラベルloadを実行 <br>  <>
ひげぽん<>sage<>02/07/03 21:46<>  <br> &nbsp;&nbsp;&nbsp;&nbsp;;jump&nbsp;to&nbsp;the&nbsp;loaded&nbsp;program <br>  <br> &nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ax,0x1000&nbsp;&nbsp;&nbsp;;■axに0x1000をセット <br> &nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;es,ax&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;■esに0x1000をセット <br> &nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ds,ax&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;■dsに0x1000をセット <br> &nbsp;&nbsp;&nbsp;&nbsp;push&nbsp;&nbsp;&nbsp;&nbsp;ax&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;■スタックaxをpush <br> &nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ax,0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;■axに0をセット <br> &nbsp;&nbsp;&nbsp;&nbsp;push&nbsp;&nbsp;&nbsp;&nbsp;ax&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;■スタックaxをpush <br> &nbsp;&nbsp;&nbsp;&nbsp;retf&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;■呼び出し元に戻る <br>  <br> ;&nbsp;------------------------------------------------------- <br> ;&nbsp;functions&nbsp;and&nbsp;data&nbsp;used&nbsp;by&nbsp;the&nbsp;bootstrap&nbsp;program <br> ;&nbsp;------------------------------------------------------- <br>  <br> ;data <br>  <br> bootdrv&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;variable&nbsp;containing&nbsp;the&nbsp;bootdrive <br>  <br>  <br>  <br>  <>
ひげぽん<>sage<>02/07/03 21:50<>  <br> ;load kernel from bootdrive <br>  <br> load: <br>     ;reset the diskdrives <br>  <br>     push    ds           ;store DS        ■データセグメントの値をスタックへpush <br>     mov     ax,0         ;select function ■ディスクを <br>     mov     dl,[bootdrv] ;drive to reset  ■リセット <br>     int     13h          ;reset           ■する 成功した場合キャリフラグが1になる <br>     pop     ds           ;restore DS      ■スタックからpop <br>     jc      load         ;failed try again■キャリーフラグが1のときにラベルへジャンプ <br>  <br> load1: <br>     mov    ax,0x1000     ;es:bx=1000      ■エキストラセグメントに <br>     mov    es,ax         ;                ■1000をセット <br>     mov    bx,0          ;                ■bxに0をセット <br>  <br>     ;read disksectors <br>  <br>     mov    ah,2          ;select function     ■セクタを読んでメモリにセット <br>     mov    al,10         ;read 10 sectors     ■10セクタ読む 格納先はes:bx <br>     mov    cx,5          ;cylinder=0,sector=5 ■シリンダ0,セクタ5 <br>     mov    dx,0          ;head=0,drive=0      ■ヘッド0,ドライブ0 <br>     int    13h           ;                    ■実際にセクタを読み込む 成功した場合キャリフラグが1になる <br>     jc     load1         ;                    ■キャリーフラグ?が1のときにラベルへジャンプ <br>  <br>     retn                 ;                    ■呼び出し元に戻る <br>  <br>  <br> times 512-($-$$)-2 db 0 <br>         dw  0AA55h <br>  <>
ひげぽん<><>02/07/03 21:57<> ソースの概要および実行順序を今分かっている分を書いてみると <br>  <br> (1)外部割込み禁止 <br> (2)スタックのセットアップ <br> (3)外部割り込み可能にする <br> (4)ブートドライブ情報保存 <br> (5)ディスクをリセットする <br> (6)ディスクを読んでメモリにセットする <br> (7)読み込んだプログラムへジャンプする??? <br>  <br> でしょうか。 <br>  <>
ひげぽん<><>02/07/03 21:59<> <a href="../test/read.cgi/tech/1024411711/511" target="_blank">&gt;&gt;511</a> <br> もう一息です、がんばります。 <br>  <br>  <>
ひげぽん<><>02/07/03 22:07<> 疑問なのですが、 <br> load:ラベル部分でディスクをリセットしています(int 13h,0) <br> なぜdsの値をいったんスタックに退避しているのでしょうか？ <br> ご紹介いただいた <br> http://www.ctyme.com/intr/rb-0605.htm <br> を見る限りでは、dsの値が書き換わることはなさそうなのですが。 <br>  <br>  <br>  <>
デフォルトの名無しさん<><>02/07/03 22:26<> <a href="../test/read.cgi/tech/1024411711/512" target="_blank">&gt;&gt;512</a> <br> ひげぽんあんたはすごいよ。 <br> まじで。 <br>  <>
デフォルトの名無しさん<>sage<>02/07/03 23:06<> <a href="../test/read.cgi/tech/1024411711/512" target="_blank">&gt;&gt;512</a> <br> &gt; 半角空白を&ｎｂｓｐ;で置き換えるしかないのでしょうか？  <br> 全角スペースで置き換える方が簡単だと思います。 <>
ひげぽん<><>02/07/03 23:21<> <a href="../test/read.cgi/tech/1024411711/521" target="_blank">&gt;&gt;521</a> <br> ちょうど追加分があるのでやってみます <br>  <br> times　512-($-$$)-2　db　0　　;■nasmにファイルサイズが512byteであることを教える <br> 　　　　　　　　dw　　0AA55h　　　　　　　;■ブートストラップの最後の2byteは0AA55hがセットされていなければならない <>
デフォルトの名無しさん<><>02/07/04 23:42<> ひげぽんがんばれage!!! <br> 参考になればどうぞ。 <br> &gt;最後のブートシグニチャは必ずマジックナンバーと呼ばれる0xAA55という値が <br> &gt;入っています。この値が入っていないとマスターブートレコード自体が <br> &gt;無効なものとして扱われ、BIOSによってはブートストラップローダが <br> &gt;実行されませんし、パーティションテーブルも読み込まれません。 <br> &gt;つまりこのマスターブートレコードが正当なものであることを保証する署名（シグニチャ）です。 <br>  <>
デフォルトの名無しさん<>sage<>02/07/04 23:44<> <a href="../test/read.cgi/tech/1024411711/823" target="_blank">&gt;&gt;823</a>はひげぽん以下という罠。 <>
デフォルトの名無しさん<>sage<>02/07/04 23:45<> ○ <a href="../test/read.cgi/tech/1024411711/523" target="_blank">&gt;&gt;523</a> <br> × <a href="../test/read.cgi/tech/1024411711/823" target="_blank">&gt;&gt;823</a> <>
デフォルトの名無しさん<><>02/07/04 23:47<> <a href="../test/read.cgi/tech/1024411711/524" target="_blank">&gt;&gt;524</a> <br> え？どういうこと <>
デフォルトの名無しさん<>sage<>02/07/04 23:51<> <a href="../test/read.cgi/tech/1024411711/526" target="_blank">&gt;&gt;526</a> <br> お前、すぐ上の <a href="../test/read.cgi/tech/1024411711/522" target="_blank">&gt;&gt;522</a> ぐらいみろよ。 <br>  <br> &gt; dw 0AA55h ;■ブートストラップの最後の2byteは0AA55hがセットされ <br> &gt; 　　　　　　ていなければならない  <br>  <br> バカ丸出しだぞ。 <>
ひげぽん<>sage<>02/07/05 00:08<> <a href="../test/read.cgi/tech/1024411711/523" target="_blank">&gt;&gt;523</a> <br> ありがとう。 <br> 詳しい説明たすかります。 <>
デフォルトの名無しさん<><>02/07/05 00:47<> だんだんとひげぽんが成長するにつれ、 <br> 疑問に答えられるやつがいなくなってきたね。 <br> ｵﾚﾓﾅｰ <>
デフォルトの名無しさん<>sage<>02/07/05 01:02<> <a href="../test/read.cgi/tech/1024411711/90" target="_blank">&gt;&gt;90</a> <br> MS-DOSみたいなのを作ればいいんじゃないかな。 <br> なんか、話が発展しすぎてるけど。GUIとかJAVAは当分先だろう。 <br> 個人的には、GPLなLinuxよりもBSDをベースにして欲しい。 <br> フロッピー１枚に収まるBSDとか探して、ソース見てみれば？ <br> CUIで低機能でも、個人が作ったOSならば是非とも触ってみたい。 <>
530<>sage<>02/07/05 01:04<> なんじゃこりゃ。 <br> こんなにレスあったんか。 <br> 鬱だ・・・氏んできます。 <>
デフォルトの名無しさん<>sage<>02/07/05 01:36<> ひげぽん以外を応援あげ。 <br>  <br> みんな、性格がよく（煽りに乗らず、くだらんレスにもお礼を言う）、 <br> 勤勉で（会社から帰っての１、2時間を勉強にあてている）、 <br> 頭のいい（短期間でかなりの進歩を見せている）、 <br> そんなひげぽんなんかに負けるな。 <br>  <br> 性格がゆがんでて、怠惰で、頭の悪い2チャンネラの底力を見せてみろ。 <>
デフォルトの名無しさん<>sage<>02/07/05 01:43<> （ﾟ∀ﾟ）ま、ひげぽんが今作ってるのは ブッ茶けて言うと <br> たんなるブートローだだしねぇ。応援はするけど。OSじゃないよね. <>
デフォルトの名無しさん<>sage<>02/07/05 01:46<> <a href="../test/read.cgi/tech/1024411711/532" target="_blank">&gt;&gt;532</a> <br> 頭が悪いのはあなただけです。 <>
デフォルトの名無しさん<>sage<>02/07/05 02:23<> オレ質問いいっすか？<a href="../test/read.cgi/tech/1024411711/514" target="_blank">&gt;&gt;514</a> なんだけど、一番最初で、割り込みを禁止して  <br> ss:sp を設定したら、またすぐ割り込み許可してるじゃん。 <br> でも、まだ、割り込みベクタを初期化してるわけでもないし、 <br> 割り込みが発生したときに実行されるべきルーチンもロードされてないわけじゃん。 <br> そんな状況で割り込み許可なんてしちゃって良いの？ <br> そんなとき割り込みが発生したらどうなるの？ <br>  <br> あと <a href="../test/read.cgi/tech/1024411711/515" target="_blank">&gt;&gt;515</a> でひげぽんは retf の説明を「呼び出し元に戻る」と書いているけど <br> 本当はそうじゃないのは分かってるよね？ いや念のため確認したかっただけっす。 <>
デフォルトの名無しさん<> sage <>02/07/05 04:22<> &gt;535 <br> あれ？リアルモードの割り込みベクタは、0:0〜0:1000までに存在してて <br> ベクタ初期化はBIOSがやってくれてて、ルーチンも、UMAのどっかに <br> BIOS ROMとして用意されていたはず。 <br> ＃でないとint13hとか、int 09hとかで大問題になるはず…… <>
デフォルトの名無しさん<> sage <>02/07/05 04:22<> まちがい。0:0〜0:400 <>
まぁ、どうでも良いけど<><>02/07/05 04:41<> <a href="../test/read.cgi/tech/1024411711/533" target="_blank">&gt;&gt;533</a> <br> おれは、だから仕様をと、、、 <br>  <>
デフォルトの名無しさん<>sage<>02/07/05 05:54<> <a href="../test/read.cgi/tech/1024411711/535" target="_blank">&gt;&gt;535</a> <br> ブートローダに制御が渡る前にBIOSが設定してる。 <>
デフォルトの名無しさん<>sage<>02/07/05 06:50<> <a href="../test/read.cgi/tech/1024411711/516" target="_blank">&gt;&gt;516</a>   int 13h のコメントが「成功した場合キャリフラグが1になる」  になってますけど、これは「失敗した場合」ですよね？　つまり  成功するまで同じ処理を繰り返す、と。   <>
ひげぽん<><>02/07/05 11:30<> <a href="../test/read.cgi/tech/1024411711/533" target="_blank">&gt;&gt;533</a> <br> &gt;（ﾟ∀ﾟ）ま、ひげぽんが今作ってるのは ブッ茶けて言うと <br> &gt;たんなるブートローだだしねぇ。応援はするけど。OSじゃないよね. <br> その通りです、まずは取っ掛かりですね。ブートローダーがきちんと作れれば <br> 一応先に進めるんで・・・ <br> まずは動く物を作りたいっす。 <br>  <br> <a href="../test/read.cgi/tech/1024411711/535" target="_blank">&gt;&gt;535</a> <a href="../test/read.cgi/tech/1024411711/536" target="_blank">&gt;&gt;536</a> <a href="../test/read.cgi/tech/1024411711/537" target="_blank">&gt;&gt;537</a> <a href="../test/read.cgi/tech/1024411711/539" target="_blank">&gt;&gt;539</a> <br> 私の思いつかない疑問と、その回答ありがとうございます。 <br> BIOSってさまさまですね。 <br> 割り込みルーチンが無かったら確かにえらいことですよね。 <br>  <br> <a href="../test/read.cgi/tech/1024411711/540" target="_blank">&gt;&gt;540</a> <br> 間違いでした。すいません。 <br>  <br>  <>
ひげぽん<>sage<>02/07/05 11:32<> 誤　BIOSってさまさまですね <br> 正　BIOSさまさまですね <br>  <>
デフォルトの名無しさん<>sage<>02/07/05 12:00<> <a href="../test/read.cgi/tech/1024411711/541" target="_blank">&gt;&gt;541</a> <br> <a href="../test/read.cgi/tech/1024411711/535" target="_blank">&gt;&gt;535</a>の最後の質問への回答きぼん。 <>
ひげぽん<><>02/07/05 12:38<> <a href="../test/read.cgi/tech/1024411711/535" target="_blank">&gt;&gt;535</a> <br> 失礼しました。 <br> あまり考えずに進んだところに罠が・・・ <br> 確かに呼び出し元に戻るっていうのはどう考えてもおかしいですね。 <br>  <br> ret：call命令でコールされたサブルーチンから復帰する。 <br> と同等のものとの認識でした。 <br>  <br> 以下 <br> http://members.tripod.co.jp/guriponn/others/japanise/chapter7.txt <br> より引用 <br>  <br> (*) コードセグメントが一つ(tiny,small,compactモデル)の時は、関数は <br>  <br>     nearです。つまり、関数の引数がデータセグメントに置かれるかスタ <br>  <br>     ックに詰まれた時の関数のポインタは16 bitsの長さのオフセットと <br>  <br>     言う事です。(CSレジスタはその値を永遠に変更せずいつでも全ての関 <br>  <br>     数のアドレスを返します。)そして関数は普通のnearの`CALL'で呼び出 <br>  <br>     され、`RETN'を用いて関数へ戻ります。(NASMでは、`RETN'と`RET'を同 <br>  <br>     義語として扱います。)つまり、あなたが自分のルーチンを書く時に、 <br>  <br>     関数へ戻るには`RETN'を使い、外的な(externの)Cのルーチンを呼び出 <br>  <br>     すときにはnearの`CALL'を使わねばならないと言う事です。 <br>  <br>  <br>  <br> (*) コードセグメントが１つ以上(medium,large,hugeモデル)の時は、関数は <br>  <br>     farです。つまり、関数のポインタは32 bitsの長さと言う事です。(16- <br>  <br>     bitのオフセットと16-bitのセグメントで処理される)そして、`CALL FAR' <br>  <br>     (または`CALL seg:offset')で呼び出され、`RETF'で関数に戻ります。も <br>  <br>     う一度繰り返しますが、従ってあなたが自分のルーチンを書くときに関 <br>  <br>     数へ戻るには`RETF'を用いて関数へ戻り、`CALL FAR'で外的な(extern <br>  <br>     の)Cのルーチンを呼び出すのです。 <br> 引用ここまで <br>  <br> 良く分からないです。 <br>  <br>  <>
ひげぽん<>sage<>02/07/05 12:40<> CALL FAR で呼び出されているのは何でしょうか？ <br>  <>
デフォルトの名無しさん<>sage<>02/07/05 12:50<> スタックに0x1000:0000を積んで、そのアドレスにretfで戻る（飛ぶ）。 <br> retだから呼び出し元に戻るという考えは捨てよ <>
ひげぽん<><>02/07/05 13:04<> 確認です <br>  <br> &gt;;jump to the loaded program <br> &gt; <br> &gt;mov     ax,0x1000 <br> &gt;mov     es,ax <br> &gt;mov     ds,ax <br> &gt;push    ax <br> &gt;mov     ax,0 <br> &gt;push    ax <br> &gt;retf <br>  <br> retfの手前では <br> ax →0 <br> es →0x1000 <br> ds →0x1000 <br> スタックには、0x1000と0が積まれています。 <br>  <br> <a href="../test/read.cgi/tech/1024411711/546" target="_blank">&gt;&gt;546</a>さん <br> &gt;スタックに0x1000:0000を積んで、そのアドレスにretfで戻る（飛ぶ）。 <br>  <br> retfはどのレジスタ(スタック)を参照してそのアドレスに飛ぶのでしょうか？ <br> それ以外のレジスタは、とんだ先で実行されるコードで参照されるためのものでしょうか？ <br>  <br> 質問ばかりで申し訳ないですが、お願いいたします。 <br>  <br> 今日は仕事はお休みのため、勉強するチャンスです。 <br>  <br>  <br>  <>
デフォルトの名無しさん<>sage<>02/07/05 13:38<> retfだけじゃなくてretn(ret)もスタックの一番上から <br> アドレスを取り出してそこにジャンプする命令 <>
デフォルトの名無しさん<>sage<>02/07/05 13:42<> <a href="../test/read.cgi/tech/1024411711/544" target="_blank">&gt;&gt;544</a> <br> なんでこのページは第7章しかないの？ <br> はじめから見てみたい。 <br> 目次の場所教えて。 <>
デフォルトの名無しさん<>sage<>02/07/05 13:45<> archive.orgへ逝け <>
ひげぽん<><>02/07/05 16:42<> そろそろ自分でソースを書きそうなのですが <br> アセンブラのソースって、どういうインデントが良いのかなあ。 <br> コメントは、日本語英語どっちがいいんだろう。 <br> PJ名(仮称)はどうしよう。 <>
デフォルトの名無しさん<><>02/07/05 17:46<> &gt;コメントは、日本語英語どっちがいいんだろう。  <br> 本気なら英語のほうが良い。 <br> でも2chでは日本語のほうが良いかも。 <br>  <br> PJ名は、2chとかどうよ？ <>
デフォルトの名無しさん<>sage<>02/07/05 18:03<> <a href="../test/read.cgi/tech/1024411711/552" target="_blank">&gt;&gt;552</a> 本気なら英語のほうが良い。  <br> 根拠は？ <>
デフォルトの名無しさん<><>02/07/05 18:05<> 日本人以外の奴等とオープンソースで開発するならばという意味です。 <br> 英語圏のやつらでなくても、日本語よりはましかと･･･ <>
デフォルトの名無しさん<>sage<>02/07/05 18:20<> 英語のほうがいいかも。 <br> 今のところひげぽんは本気っぽいからね。 <br> プログラム板の猛者も、立ち上がるかもしれん。 <br>  <br> PJ名(仮称) higeponOSでいいんじゃない？ <>
デフォルトの名無しさん<>sage<>02/07/05 18:47<> はっきり言ってｶﾞｲｼﾞﾝと開発はだめすぎ <br> ｸｽﾞOSじゃｶﾞｲｼﾞﾝは見向きもしないし、 <br> 良いOSになりそうだったらそれは日本人の手柄でありたいと思うがどうよ？ <>
デフォルトの名無しさん<>sage<>02/07/05 18:59<> 英語のメリット <br>     日本人以外のやつにとって敷居が低くなる <br> 英語のデメリット <br>     日本人にとって読みにくい。 <br>     いんちき英語コメントになる可能性がある。 <br>  <br> 日本語のメリット <br>     日本人にとって非常に読みやすい。 <br> 日本語のデメリット <br>     日本語はマイナー言語である。 <br>     <>
デフォルトの名無しさん<><>02/07/05 19:16<> 技術以外の話題になるとみんなとたんに元気になるね。 <>
デフォルトの名無しさん<>sage<>02/07/05 19:16<> いいじゃん。 <br> 少しでも貢献したいんだよ。 <br> 純粋に。 <>
ひげぽん<>sage<>02/07/05 19:31<> アセンブラのインデントはemacsのasm-modeに準じることにしました <br>  <br> コメントは、どうしましょう。 <br> 一応良いOSを作るつもりなので、 <br> 英語のほうが良いのでしょうか？ <br>  <>
デフォルトの名無しさん<>sage<>02/07/05 19:41<> つもりって… <br> 死ぬほど無謀だな <>
デフォルトの名無しさん<><>02/07/05 19:46<> ひげぽん期待age! <br> 2ch発信のOSをつくれり。 <>
デフォルトの名無しさん<>sage<>02/07/05 20:14<> オープンソースにしてsourceforgeにプロジェクト登録はどうか？ <br> ttp://sourceforge.jp/ <br>  <br> 容量無制限かつcgi可のHPスペースとか、MLとかが無料で利用できるし、 <br> 何よりも新規プロジェクトに飢えてるから、本家よりも軽快だし。 <>
デフォルトの名無しさん<>sage<>02/07/05 20:27<> <a href="../test/read.cgi/tech/1024411711/559" target="_blank">&gt;&gt;559</a> <br> 単にブートローダーの話がつまらないだけだと思われ。 <br>  <br> アプリケーションプログラマには関係ないし。 <>
デフォルトの名無しさん<>sage<>02/07/05 20:29<> 日本語はUTF-8だのSJISだのEUCだのの変換が面倒かもな。 <br>  <>
デフォルトの名無しさん<>sage<>02/07/05 20:32<> せっかくだからUCS4ネイティブで行きましょう。 <>
ひげぽん<><>02/07/05 20:35<> <a href="../test/read.cgi/tech/1024411711/565" target="_blank">&gt;&gt;565</a> <br> コメントは英語で行くことにしました。 <br> いんちき英語にならぬよう祈るのみです。 <br>  <br> <a href="../test/read.cgi/tech/1024411711/555" target="_blank">&gt;&gt;555</a> <br> 引き続き名前募集です。 <br>  <br> <a href="../test/read.cgi/tech/1024411711/563" target="_blank">&gt;&gt;563</a> <br> それは良いかもしれませんね。 <br> 骨格部分が出来て公開できる段階になったら <br> sourceforgeにいくかも！！ <>
デフォルトの名無しさん<>sage<>02/07/05 20:44<> ttp://sourceforge.jp/projects/hos/ <br> こんな感じ？こっちは組み込みOSだけど。 <>
デフォルトの名無しさん<><>02/07/05 20:45<> OSのデベロッパーってすごいな <>
ひげぽん<><>02/07/05 21:34<> <a href="../test/read.cgi/tech/1024411711/568" target="_blank">&gt;&gt;568</a> <br> 見てみました。 <br> なんだか見ているだけでやる気が出てきます(笑) <br> やはり複数人で開発すると楽しそうですね。 <br>  <>
デフォルトの名無しさん<>sage<>02/07/05 23:08<> <a href="../test/read.cgi/tech/1024411711/568" target="_blank">&gt;&gt;568</a> <br> HOSって、パトレイバーか？（ｗ <>
デフォルトの名無しさん<>sage<>02/07/06 03:44<> <a href="../test/read.cgi/tech/1024411711/571" target="_blank">&gt;&gt;571</a> <br> 作者がファンだから、あやかってるらしい。 <>
デフォルトの名無しさん<>sage<>02/07/06 06:32<> http://lkh.linux.or.jp/24kernel/source/html4/boot.html <>
デフォルトの名無しさん<>sage<>02/07/06 06:40<> <a href="../test/read.cgi/tech/1024411711/573" target="_blank">&gt;&gt;573</a> <br> 俺はあんたを愛してしまいそうだ。 <>
デフォルトの名無しさん<><>02/07/06 07:06<> お前らUNIX Magazine 7月号の特集は読みましたか？ <br> なかなか、参考になるぞ。 <br>  <br>  <br>  <br>  <br>  <br>  <br>  <br>  <br>  <br>  <br>  <br>  <br>  <br>  <br>  <br> っと言おうと思ったが、<a href="../test/read.cgi/tech/1024411711/573" target="_blank">&gt;&gt;573</a> の方が詳しい罠 <>
デフォルトの名無しさん<>sage<>02/07/06 09:34<> <a href="../test/read.cgi/tech/1024411711/575" target="_blank">&gt;&gt;575</a> <br> おーい。あんまり変なスペース入れなよ。俺様の大事なスレなんだから。（ｗ <br> ウニクスマガジンの特集って白崎博生さんのだよね。 <br> 5月から読んでるけど、俺、これが楽しみでしょうがない。 <br> （俺はウイン屋だから、こういう雑誌見たことなかった。） <br>  <br> ページ数を3倍増くらいしてがむばってほしい。&gt;&gt;白崎さん <br> って、2チャンなんか見てないかな。 <>
ひげぽん<><>02/07/06 13:30<> <a href="../test/read.cgi/tech/1024411711/573" target="_blank">&gt;&gt;573</a> <br> 貴重な情報サンクス！ <br> ブート部はgasで書かれているようですが、 <br> 参考になります。 <br>  <br> 昨晩は、bochs(x86エミュレータ)を入れていろいろ実験していました。 <br> かなり便利ですね。 <br> アセンブル→ブートテストのサイクルが同じマシン上ですぐ出来る！ <br>  <br>  <>
デフォルトの名無しさん<>sage<>02/07/06 15:54<> PC のブートの勉強用としてはこんなのもある。 <br> ttp://www.rbt.his.fukui-u.ac.jp/~naniwa/comp/OS/ <br>  <br> GPL。μITRON 上に POSIX API を実装したという珍品。しかも純和製。 <br> ドキュメントが少ないので勉強用としては今一つかな。カーネル本体は <br> 複雑で訳わからんが、ブート部 (eota/sfsboot, eota/boot 以下) は比 <br> 較的すっきりしている。eota/boot は gas と C で書かれていて、 <br> eota/sfsboot 以下はそれを nasm と C で書き換えて拡張したようだ。 <br> Bochs でも動いた。 <br>  <br> 参考になるかな。 <>
ひげぽん<><>02/07/06 16:52<> <a href="../test/read.cgi/tech/1024411711/578" target="_blank">&gt;&gt;578</a> さん <br> ありがとう。 <br> nasmで書かれたbootソースというだけでも <br> 大変助かります。 <br>  <br> Bochs等お詳しそうですね。 <br> 今後もアドバイス頂けるとうれしいです。 <br>  <>
578<>sage<>02/07/06 21:54<> 単なるマイナー OS オタなのでアドバイスは無理っぽい。 <>
ひげぽん<>sage<>02/07/06 22:00<> <a href="../test/read.cgi/tech/1024411711/580" target="_blank">&gt;&gt;580</a> <br> では、580さんに目をつけてもらえるようになったら <br> マイナーOSの仲間入りですね(笑) <br> 早くそうなるようにがんばります。 <>
ひげぽん<><>02/07/06 22:01<> ;------------------------------------------------------------------------------- <br> ;&nbsp;Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;higeboot.asm <br> ;&nbsp;Description&nbsp;:&nbsp;boot&nbsp;from&nbsp;floppy&nbsp;disk&nbsp;and&nbsp;echo&nbsp;"2ch" <br> ;&nbsp;Revision&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;$Revision: 1.1 $ <br> ;&nbsp;Copyright&nbsp;(c)&nbsp;2002&nbsp;HigePon <br> ;------------------------------------------------------------------------------- <br>  <br> [ORG&nbsp;0] <br>  <br> jmp&nbsp;07C0h:start <br>  <br> start: <br>  <br> hello: <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;al,&nbsp;'2' <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;call&nbsp;print <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;al,&nbsp;'c' <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;call&nbsp;print <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;al,&nbsp;'h' <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;call&nbsp;print <br>  <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jmp&nbsp;hang <br>  <br> print: <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ah,&nbsp;0Eh <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;bx,&nbsp;7 <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;10h <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ret <br>  <br> hang: <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jmp&nbsp;hang <br>  <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;times&nbsp;510-($-$$)&nbsp;db&nbsp;0 <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dw&nbsp;0AA55h <br>  <>
ひげぽん<><>02/07/06 22:04<> やっと動くものを自分で作れました。 <br> <a href="../test/read.cgi/tech/1024411711/582" target="_blank">&gt;&gt;582</a>のソースをnasmでコンパイルして <br> フロッピーディスクにddコマンドなどでコピー <br> ブートすると"2ch"の文字が！！ <br>  <br> 全然たいしたものではないのですが、やっぱりうれしいですね。 <br>  <>
ひげぽん<><>02/07/06 22:15<> 上記ソースだと文字列を表示するのが大変なので <br> ↓のようにしたのですが <br> "Hello!"の後に文字化けした文字列が出てしまいます。 <br> なぜでしょうか？ <br>  <br> msg&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db&nbsp;&nbsp;'Hello!' <br>  <br> start: <br>  <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;si,&nbsp;msg <br> print: <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lodsb&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>  <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cmp&nbsp;al,&nbsp;0&nbsp;&nbsp; <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;je&nbsp;hang <br>  <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ah,&nbsp;0Eh <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;bx,&nbsp;7 <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;10h <br>  <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jmp&nbsp;print&nbsp;&nbsp; <br>  <>
デフォルトの名無しさん<>sage<>02/07/06 22:36<> <a href="../test/read.cgi/tech/1024411711/584" target="_blank">&gt;&gt;584</a> <br> 'Hello!' の後ろに、00h がないからじゃないの ? アセンブラは、C みた <br> いに "ABC" で 00h は付加してくれないよ。 <br> Intel 系のアセンブラは良くわかんないけど... <br> msg     db  'Hello!', 00h <br> とか書けばいいのでは ? <>
デフォルトの名無しさん<>sage<>02/07/06 22:41<> <a href="../test/read.cgi/tech/1024411711/584" target="_blank">&gt;&gt;584</a> <br> msg db 'Hello!' を <br> msg db 'Hello!$'  <br> cmp al, 0 を <br> cmp al ,'$' にしてみては？ <>
586<>sage<>02/07/06 22:43<> わーだぶっちゃったごめんなさい <>
ひげぽん<><>02/07/06 23:03<> ;------------------------------------------------------------------------------- <br> ;&nbsp;Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;higeboot.asm <br> ;&nbsp;Description&nbsp;:&nbsp;boot&nbsp;from&nbsp;floppy&nbsp;disk&nbsp;and&nbsp;echo&nbsp;"Hello&nbsp;2ch!!" <br> ;&nbsp;Revision&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;$Revision: 1.1 $ <br> ;&nbsp;Copyright&nbsp;(c)&nbsp;2002&nbsp;HigePon <br> ;------------------------------------------------------------------------------- <br>  <br> [ORG&nbsp;0] <br>  <br> jmp&nbsp;07C0h:start <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msg&nbsp;db&nbsp;&nbsp;'Hello&nbsp;2ch&nbsp;World!',&nbsp;00h <br>  <br> start: <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ax,&nbsp;cs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;what?? <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ds,&nbsp;ax&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;what?? <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;es,&nbsp;ax&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;what?? <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;si,&nbsp;msg&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;set&nbsp;msg <br>  <br> print: <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lodsb&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;set&nbsp;al=current&nbsp;charcter&nbsp;at&nbsp;si <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cmp&nbsp;al,&nbsp;0 <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;je&nbsp;hang <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ah,&nbsp;0Eh&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;print <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;bx,&nbsp;7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;a&nbsp;charcter <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;10h&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;at&nbsp;al <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jmp&nbsp;print&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;next&nbsp;charcter <br> hang: <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jmp&nbsp;hang <br>  <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;times&nbsp;510-($-$$)&nbsp;db&nbsp;0 <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dw&nbsp;0AA55h <br>  <>
ひげぽん<><>02/07/06 23:04<> <a href="../test/read.cgi/tech/1024411711/585" target="_blank">&gt;&gt;585</a> 586 <br> thanks!! <br> これで結構すっきりかけたと思います。 <>
585<>sage<>02/07/06 23:11<> <a href="../test/read.cgi/tech/1024411711/586" target="_blank">&gt;&gt;586</a> <br> なんか懐かしい。そう言えば、Intel 系って文字列のターミネータが何故 <br> か '$' だったよね。Motorola 派 (流派かよ!!) としては、結構不思議 <br> でした。 <br>  <br> <a href="../test/read.cgi/tech/1024411711/589" target="_blank">&gt;&gt;589</a> <br> ひげんぽん一歩前進、おめでとう。俺がついていけるのは、このあたりま <br> でだけど、がむばってね。 <>
ひげぽん<><>02/07/07 00:07<> <a href="../test/read.cgi/tech/1024411711/585" target="_blank">&gt;&gt;585</a> <br> 本当にありがとう。 <br> おかげさまで、ちょっとだけ前に進みました。 <br>  <br> 次の目標は、 <br> フロッピーの最初の512byte以降のプログラムを読み込めるように <br> することです。 <>
デフォルトの名無しさん<>sage<>02/07/07 00:15<> <a href="../test/read.cgi/tech/1024411711/590" target="_blank">&gt;&gt;590</a> <br> 文字列のターミネータが$なのはMS-DOSのシステムコールの仕様。 <br>  <br> このスレ見てたらなんか作りたくなってきた…（ｗ <>
ひげぽん<>sage<>02/07/07 00:26<> <a href="../test/read.cgi/tech/1024411711/592" target="_blank">&gt;&gt;592</a> <br> &gt;このスレ見てたらなんか作りたくなってきた…（ｗ <br> 作りましょう。 <br> ぜひ・・・ <br>  <>
デフォルトの名無しさん<><>02/07/07 01:24<> ひげぽん期待age <br> 有言実行すばらしい。 <>
デフォルトの名無しさん<>sage<>02/07/07 02:00<> ひげぽん素晴らしい。 <br> 漏れもOSとまではいかないでもハードウェアとアセンブラの勉強を <br> 兼ねてOSもどきを作ろうとか思ってたけどまだ、何もはじめてない… <br> 水戸黄門の歌みたいだ…♪後から来たのに追い越され〜 <br> 鬱… <>
590<>sage<>02/07/07 07:41<> <a href="../test/read.cgi/tech/1024411711/592" target="_blank">&gt;&gt;592</a> <br> ちょっと惜しい。CP/M からだよ。固定文字列なら、いいんだけどカーソル位置 <br> 指定なんかで動的に文字列生成する時に、たまたま '$' が生成されてはまった <br> 事あり。 <br> と言うように、優れていない仕様でもとにかく具体的に動くものがあるとなんか <br> 萌える。そう言う意味で、<a href="../test/read.cgi/tech/1024411711/588" target="_blank">&gt;&gt;588</a> みたいにソースを適時出すのはいいことだと <br> 思う。ひげぽんがむば。 <>
592<>sage<>02/07/07 08:15<> <a href="../test/read.cgi/tech/1024411711/596" target="_blank">&gt;&gt;596</a> <br> Intel系って80系も含めて言ってたわけね。 <br> なんかアホみたいだ、俺。 <br>  <br> ってことで、mingw32とnasmをインストール。 <>
592<>sage<>02/07/07 11:57<> Technical Documents Related to Bochs <br> http://bochs.sourceforge.net/techdata.html <>
ひげぽん<><>02/07/07 12:03<> いくつか疑問点があります。 <br>  <br> &gt;[ORG&nbsp;0] <br> &gt; <br> &gt;jmp&nbsp;07C0h:start <br>  <br> セグメント07C0hに行くということだと思うのですが、 <br> どういう意図なのでしょうか？ <br> 意味も分からず書いていました。 <br>  <br>  <br> &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msg&nbsp;db&nbsp;&nbsp;'Hello&nbsp;2ch&nbsp;World!',&nbsp;00h <br> &gt; <br> &gt;start: <br> &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ax,&nbsp;cs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;what?? <br> &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ds,&nbsp;ax&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;what?? <br> &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;es,&nbsp;ax&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;what?? <br>  <br> csの値を、ds,esに設定しているのですが、 <br> これは絶対必要な処理なのでしょうか？ <br>  <br>  <>
デフォルトの名無しさん<>sage<>02/07/07 12:17<> 7c0h:startはseg:offの形式だっつーの。 <br>  <>
デフォルトの名無しさん<>sage<>02/07/07 12:18<> cs=dsとはコードとデータが同一セグメントにあると言うこと。 <br> vcのリンカ設定で言うなら、/merge:.data=.textってことサ <>
ひげぽん<><>02/07/07 12:26<> ありがとうございます。 <br>  <br> <a href="../test/read.cgi/tech/1024411711/600" target="_blank">&gt;&gt;600</a> <br> jmp 07C0した時点で、セグメントアドレスが決まるのか？ <br> もともとセグメントアドレスは、07COだったのでしょうか？ <br>  <br> <a href="../test/read.cgi/tech/1024411711/601" target="_blank">&gt;&gt;601</a> <br> なるほど。 <br> コードとデータが同一セグメントであることを指定しない場合、 <br> どういう扱いになるのでしょうか？ <br>  <br>  <br> 該当部分をコメントアウトすると、実行しても文字列が <br> 表示されませんでした。 <>
デフォルトの名無しさん<>sage<>02/07/07 13:44<> <a href="../test/read.cgi/tech/1024411711/602" target="_blank">&gt;&gt;602</a> <br> プログラムの先頭に来た時点 (=jmp 命令実行直前) で CS (コードセグメント <br> レジスタ) と IP (命令ポインタ/プログラムカウンタ) は、各々 0x0000 と <br> 0x7c00 になっている。(インターフェース誌７月号 P.68 参照のこと) <br>  <br> それで、この jmp 命令で CS に 0x7c00 を入れて IP に Start ラベルの <br> オフセットを入れる。 <br>  <br> msg 等のラベルも全て 0x07c0 セグメント内でのオフセットとなっているから <br> DS (データセグメントレジスタ) は、0x07c0 を入れておく必要がある。 <br> (そう言う意味では、mov es, ax は不要。) <br>  <br> &gt; コードとデータが同一セグメントであることを指定しない場合、 <br> &gt; どういう扱いになるのでしょうか？ <br> その時の DS が示す値 (正確には × 16 して) に msg のオフセットを加えた <br> 所から文字列を持ってこようとする。(要は、変な DS の値を元にアクセスする <br> アドレスを計算するため、変な場所から無理矢理データを持ってこようとする。) <br>  <br> ちなみに、SS (スタックセグメントレジスタ) と SP (スタックポインタ) も <br> 設定しておいた方が良いと思う。(インターフェース誌, P.70, リスト１〜２参 <br> 照のこと) <>
デフォルトの名無しさん<><>02/07/07 13:56<> いんたーふぇーすかってこよ <>
デフォルトの名無しさん<>sage<>02/07/07 14:22<> org 0 <br> jmp 0x07c0よりも <br> org 0x7c00としたほうがds,esにcsをセットしなくてよくてお徳なんじゃないですか？ <>
デフォルトの名無しさん<>sage<>02/07/07 14:33<> そんなことはない。 <br> raw binaryの実行イメージだから、セグメントの設定は行ってくれない。 <>
デフォルトの名無しさん<>sage<>02/07/07 15:08<> そうなんですか？orgとdsを0x7c00と0x07c0の組合わせで試してみてだめだったので、 <br> dsの設定をはずしてみたら正しく動いたのですが、これはなにか別なところで問題が <br> あることが考えられるのでしょうか？ <>
ひげぽん<><>02/07/07 16:11<> <a href="../test/read.cgi/tech/1024411711/603" target="_blank">&gt;&gt;603</a> <br> 603さんの解説とインターフェース誌を総合すると <br> jmp 0x07C0:startの替わりに <br> jmp startとした場合には、コードセグメントは0のままである。 <br>  <br> その場合は、セグメント0のオフセットアドレス0x7C00のところへ <br> ブートプログラムがロードされてしまう。 <br> するとセグメント0がブートプログラムによって分断されてしまうので <br> よろしくないということですよね。 <br>  <br> ところがjmp 0x7C0:startとすると <br> ブートプログラムは、セグメント0x7C0の先頭の場所へロードされる。 <br> ↑ <br> ここが分かりません。 <br> BIOSはブートプログラム512byteを物理メモリのあるアドレスに読み込み, <br> CPUはそのアドレスへジャンプし、実行すると思うのですが <br> なぜセグメント0x7C0を指定するセグメントの先頭にブートプログラムが <br> ロードされているかが分からないです。 <>
デフォルトの名無しさん<>sage<>02/07/07 16:27<> ロードされる物理メモリの場所は一定。 <br>  <br> far jmpではCSの値も変更できるから、07c0:0000にロードされると見ることが出来るわけ。 <br> 07c0:0000 と 0000:7c00は物理的には同じアドレスを指してるってコトをよぉく理解しよう。 <>
ひげぽん<>sage<>02/07/07 16:40<> <a href="../test/read.cgi/tech/1024411711/609" target="_blank">&gt;&gt;609</a>さん <br> ありがとう。 <br> 少ない頭で、ただいま考え中です。 <>
６０９<>sage<>02/07/07 16:45<> まぁ、segment:offsetの概念ってなかなか理解しがたいものがあるしね… <br>  <br> 物理アドレス = segment * 16 + offset <br>  <br> つまり、同じアドレスを示すsegとoffの組み合わせが何通りもあるという事。 <br> 利点としては、「６４ｋ以下のプログラムなら何処にでもロードできる」と理解しておくのがいいかも。 <br>  <br>  <br> 以上の話は「リアルモード」でしか通用しないので注意。 <br> プロテクトモードでどーなるのかは、プロテクトモードに入れる段階になったら考えればよし。 <>
ひげぽん<><>02/07/07 16:56<> <a href="../test/read.cgi/tech/1024411711/609" target="_blank">&gt;&gt;609</a>さん <br> 1セグメントのサイズは必ず64KBであり、物理メモリを64KBずつに <br> 区分けしたものがセグメントだと思っていたので混乱していました。 <br>  <br> 結局ブートプログラムは、 <br> リニアアドレス = 0x7C00に <br> ロードされているのですね。 <br>  <br> そこでセグメントレジスタを07C0にセットするとセグメントの先頭ということもあり <br> 非常に都合が良いと。 <br>  <br> ブートプログラムが開始されてjmpした以降は、 <br> 07C0のセグメントの中でのお話になるという事ですね。 <br>  <br> はじめて読む486の125ページにCSレジスタの役割が書いてありました･･･ <br>  <br> ↑ <br> 日本語が変ですが、609さんのおかげで分かってきました。 <>
６０９<>sage<>02/07/07 16:57<> 正解。 <>
ひげぽん<><>02/07/07 17:06<> <a href="../test/read.cgi/tech/1024411711/609" target="_blank">&gt;&gt;609</a>さんに大感謝！！！！ <br>  <br> ちょっと欲を出してマクロまで使ってみました。 <br> ディスクリセットまで実現！！ <br>  <br>  <br> ;------------------------------------------------------------------------------- <br> ;&nbsp;Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;higeboot.asm <br> ;&nbsp;Description&nbsp;:&nbsp;boot&nbsp;from&nbsp;floppy&nbsp;disk&nbsp;and&nbsp;echo&nbsp;"Hello&nbsp;2ch!!" <br> ;&nbsp;Revision&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;$Revision: 1.1 $ <br> ;&nbsp;Copyright&nbsp;(c)&nbsp;2002&nbsp;HigePon <br> ;------------------------------------------------------------------------------- <br>  <br> ;------------------------------------------------------------------------------- <br> ;&nbsp;Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;PRINTSTR <br> ;&nbsp;Description&nbsp;:&nbsp;print&nbsp;string <br> ;&nbsp;Param1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;string(db) <br> ;------------------------------------------------------------------------------- <br> %macro&nbsp;PRINTSTR&nbsp;1 <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;si,&nbsp;%1 <br> %%hige: <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lodsb&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;set&nbsp;al=current&nbsp;character&nbsp;at&nbsp;si <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cmp&nbsp;al,&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;if&nbsp;al&nbsp;==&nbsp;0&nbsp;then <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;je&nbsp;&nbsp;%%end&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;end&nbsp;this&nbsp;macro <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ah,&nbsp;0Eh&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;print <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;bh,&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;the&nbsp;charcter&nbsp;which&nbsp;is <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;10h&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;at&nbsp;al <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jmp&nbsp;%%hige&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;next&nbsp;character <br> %%end: <br> %endmacro <br>  <>
ひげぽん<><>02/07/07 17:07<> ;------------------------------------------------------------------------------- <br> ;&nbsp;Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;main <br> ;&nbsp;Description&nbsp;:&nbsp;boot&nbsp;program <br> ;&nbsp;Param1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;NONE <br> ;------------------------------------------------------------------------------- <br> [ORG&nbsp;0] <br>  <br> ;&nbsp;use&nbsp;segment&nbsp;07C0h&nbsp;and&nbsp;offset&nbsp;is&nbsp;address&nbsp;of&nbsp;start <br> ;&nbsp;cs&nbsp;=&nbsp;07Coh <br> jmp&nbsp;07C0h:start <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;osStart&nbsp;db&nbsp;&nbsp;'Hige&nbsp;start...',&nbsp;0dh,&nbsp;0ah,&nbsp;00h <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;resetOk&nbsp;db&nbsp;&nbsp;'disk&nbsp;reset&nbsp;ok',&nbsp;0dh,&nbsp;0ah,&nbsp;00h <br>  <br> start: <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cli&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;disable&nbsp;interrupt <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ax,&nbsp;cs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;code&nbsp;segment&nbsp;address&nbsp;is&nbsp;07C0h <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ds,&nbsp;ax&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;when&nbsp;data&nbsp;access,&nbsp;use&nbsp;07C0h&nbsp;segment <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ss,&nbsp;ax&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;when&nbsp;use&nbsp;stack,&nbsp;user&nbsp;07C0h&nbsp;segment <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sti&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;enable&nbsp;interrupt <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PRINTSTR&nbsp;osStart <br>  <br> reset: <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ax,&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;reset <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;dl,&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;drive&nbsp;0 <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;13h&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;; <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jc&nbsp;&nbsp;reset&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;if&nbsp;failed&nbsp;try&nbsp;again <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PRINTSTR&nbsp;resetOk <br>  <br> forever: <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jmp&nbsp;forever <br>  <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;times&nbsp;510-($-$$)&nbsp;db&nbsp;0 <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dw&nbsp;0AA55h <br>  <>
ひげぽん<><>02/07/07 17:17<> <a href="../test/read.cgi/tech/1024411711/609" target="_blank">&gt;&gt;609</a>さんのおかげにより <br> ディスクリセットまでこぎつけました。 <br>  <br> 次は、ディスクの513byte以降を、或るセグメントに読み込み <br> そのセグメントにjmpすれば、そのコードが実行される！！ <br> ということを実現しようと思っています。 <br>  <br> この読み込まれるプログラムをアセンブラオンリーでなく <br> Cオンリーまたは、C with インラインアセンブラで書きたいのですが、 <br> どのような環境を整えればよいのでしょうか？ <br>  <br> ひげぽんの環境は、 <br> Windows XP Pro <br> NASM <br> C++のコンパイラは、 <br> cygwin のgccと、VC++6.0 standardです。 <br>  <br>  <>
デフォルトの名無しさん<>sage<>02/07/07 17:24<> すいません。まだ分からない奴がいるんですが、 <br>  <br> <a href="../test/read.cgi/tech/1024411711/605" target="_blank">&gt;&gt;605</a> に関連して <br>  <br> org 0x7c00 <br> mov   ax,cs <br> mov   ds,ax <br> mov   es,ax <br>  <br> なら jmp 07c0h:start をしなくても ok って事？  <br>  <br> あと、 <br> jmp   offset <br> は相対アドレスのジャンプで、 <br> jmp   segment:offset <br> は絶対アドレスのジャンブって事ですか？ <>
デフォルトの名無しさん<>sage<>02/07/07 17:27<> <a href="../test/read.cgi/tech/1024411711/616" target="_blank">&gt;&gt;616</a> <br> それは取り敢えずリアルモードのまま？ <>
デフォルトの名無しさん<>sage<>02/07/07 17:28<> <a href="../test/read.cgi/tech/1024411711/616" target="_blank">&gt;&gt;616</a> <br> まだプロテクトモードに入ってないから、 <br> 32bitコンパイラは使えないよ。 <br>  <br> 16bitコンパイラでバイナリを生成した後にexe2bin汁。 <br> MSのexe2binは.com形式のためにorg100扱いで実行ファイルを生成した鴨 <>
デフォルトの名無しさん<>sage<>02/07/07 17:29<> <a href="../test/read.cgi/tech/1024411711/617" target="_blank">&gt;&gt;617</a> <br> yep <>
６０９<>sage<>02/07/07 17:30<> <a href="../test/read.cgi/tech/1024411711/617" target="_blank">&gt;&gt;617</a> <br> ＞なら jmp 07c0h:start をしなくても ok って事？ <br> OKかもしれないけど… <br> …よく分かりません… <br>  <br>  <br> jmp offsetってのはIPにoffsetを代入。 <br> jmp segment:offsetってのはIPにoffset、CSにsegmentを代入です。 <>
ひげぽん<><>02/07/07 17:32<> <a href="../test/read.cgi/tech/1024411711/618" target="_blank">&gt;&gt;618</a> <br> <a href="../test/read.cgi/tech/1024411711/619" target="_blank">&gt;&gt;619</a> <br> 何も考えていませんでした。 <br> とりあえずプロテクトモードに入ったと仮定しての <br> お話でお願いします。 <br> (プロテクトモードへの移行は一応はじめての486に記述があるので <br> いけそうだと踏んでいます。) <br>  <br> アセンブラとCのつなぎの部分とかが全然分かっていない状態です。 <br> どういう環境で、どういう手順を踏んだら良いかすら分かっていないです。 <>
デフォルトの名無しさん<>sage<>02/07/07 17:34<> アセンブラとCの繋ぎなんて関係ない。 <br> メモリ上にロードしてエントリポイントのアドレスへjmpするだけだから。 <br> ＃場合によっては環境の設定をしてから。 <br>  <>
ひげぽん<><>02/07/07 17:41<> Cでソースを書く(インラインアセンブラを含む？？） <br> →どのライブラリ、関数が使用可能かということが分からない <br>  <br> コンパイラでコンパイル <br> →どのコンパイラ(もしくは特別なコンパイルオプション)をつかえば <br> 良いかが分からない。 <br>  <br> コンパイル済みのバイナリをそのままディスクに書き込めばよいのか？ <br>  <br> もう分からないこと尽くしです、 <br> どなたか、取っ掛かりだけでも教えてもらえないでしょうか？ <>
デフォルトの名無しさん<>sage<>02/07/07 17:45<> 1 コンパイラ依存だし、ライブラリのソースが無い物の場合、 <br> 　自分で調べられないなら全部作る必要がある。 <br> 　まぁ、string.hくらいは使えるかもね <br>  <br> 2 世に出ている16bitのコンパイラで、OS固有のヘッダ領域を除去可能なツールが使える物。 <br>  <br> 2 ディスクに書き込んでも良いし、ファイルシステムに保存しても良いけど、 <br> 　後者の場合は自前で読み込むか、FSサブシステムをロードしておく必要がある。 <br>  <>
デフォルトの名無しさん<>sage<>02/07/07 17:46<> ていうか、ローダーの時点でさっさとプロテクトモードに移行して、 <br> そこから実行するのが吉かと。 <>
６０９<>sage<>02/07/07 17:48<> 果たしてあれだけの処理が５１２バイトに収まるかという問題も有る気が… <br>  <br> 一旦リアルモード -&gt; プロテクトモードにいく16BitプログラムをCで作って <br> exe2bin（exeヘッダを取り除く)して、それをディスクのブートセクタ以降に配置 <br> とかの方がいいかも。 <br>  <br> 確かexe2binしたプログラムのエントリポイントは普通０だった気がするから、 <br> セグメントの先頭に配置してやれば動くはず。 <>
デフォルトの名無しさん<>sage<>02/07/07 17:49<> <a href="../test/read.cgi/tech/1024411711/627" target="_blank">&gt;&gt;627</a> <br> MS-DOSの.com形式は256バイトのPSP領域を勝手にOSが用意するから、 <br> ORG 100hのバイナリが生成されたと思うけど？ <>
デフォルトの名無しさん<><>02/07/07 17:52<> 別に32bitコンパイラでも使う即値が16bit以下ならリアルモードでも動かせるんじゃなかったっけ？ <>
６０９<>sage<>02/07/07 17:56<>  <br> exdebのマニュアルからコピペ。 <br>  <br> ;""""""""""""""""""""""""""""""""""""""" <br> ;       .EXE ﾌｧｲﾙ･ﾍｯﾀﾞｰ <br> ;       .EXE File Header <br> ;""""""""""""""""""""""""""""""""""""""" <br>  <br>         ＥＸＨ <br>  <br> Offset  Size    Name            Description  <br>  00h  2 BYTEs   exe_ID          ;'MZ'または'ZM' <br>  02h    WORD    last_page_byte  ;最終ページ内のバイト数 <br>  04h    WORD    file_page       ;ファイルの大きさ(1ﾍﾟｰｼﾞ=512ﾊﾞｲﾄ) <br>  06h    WORD    relocation      ;リロケーション数 <br>  08h    WORD    header_size     ;ヘッダの大きさ(1ﾊﾟﾗｸﾞﾗﾌ=16ﾊﾞｲﾄ) <br>  0Ah    WORD    last_byte_min   ;ﾌﾟﾛｸﾞﾗﾑの後に必要な最小ﾒﾓﾘ(ﾊﾟﾗｸﾞﾗﾌ) <br>  0Ch    WORD    last_byte_max   ;ﾌﾟﾛｸﾞﾗﾑの後に必要な最大ﾒﾓﾘ(ﾊﾟﾗｸﾞﾗﾌ) <br>  0Eh    WORD    SS_inital       ;ＳＳの初期値 <br>  10h    WORD    SP_inital       ;ＳＰの初期値 <br>  12h    WORD    head_chk_sum    ;チェックサム <br>  14h    WORD    IP_inital       ;ＩＰの初期値　　　　　　　　　&lt;= ここの値 <br>  16h    WORD    CS_inital       ;ＣＳの初期値 <br>  18h    WORD    reloc_tbl_off   ;ﾘﾛｹｰｼｮﾝﾃｰﾌﾞﾙのｵﾌｾｯﾄ <br>  1Ah    WORD    overlay_no      ;オーバレイ番号 <br>  1Ch    WORD    reloc_table     ;リロケーション情報 <br>  <br> ここの値が幾つかによるわけだ．． <>
ひげぽん<><>02/07/07 17:59<> <a href="../test/read.cgi/tech/1024411711/625" target="_blank">&gt;&gt;625</a>,626,609,628さん <br> ありがとうございます。 <br> プロテクトモード移行後であれば32bitコンパイラが <br> 使えるということですね。 <br>  <br> ブートプログラム内または、ブートセクタ以降でプロテクトモードに移行 <br> すればよいのですね。 <br>  <br> お勧めな環境とかってありますか？ <br> こういうのってどこで調べればよいのでしょうか。 <br> キーワードが悪いのか全然だめです。 <br>  <br>  <br>  <>
まだ分からない奴<>sage<>02/07/07 18:08<> 話題が映っているのに恐縮ですが、、 <br> 609さん <br> <a href="../test/read.cgi/tech/1024411711/621" target="_blank">&gt;&gt;621</a> の最後の２行は「教科書的意味」でそうなるのは分かりますが、 <br> 厳密にそうなるのでしょうか？ <br> 今オレは nasm を試せないのですが、 linuxの as86(いわゆる gas だと思う) <br> で↓をアセンブルすると、 <br> jmp L1 <br> jmp L1 <br> L1:jmp L1 <br> jmp 0x07c0:L1 <br>  <br> 出力されるコードが、 <br> eb 02 eb 00 eb fe ea 04 00 c0 07 <br> となります。つまり最初の6バイトに関しては eb が jmp 命令で <br> その後の１バイトが相対アドレスだと思います。 <br> (負の数を２の補数で表している) <br> つまり、機械語レベルでは代入ではなく加算なのではないでしょうか？ <br>  <br> 一方最後の5バイトは ea が jmp 命令で 続く4バイトでジャンプ先の <br> 絶対アドレスを指定しているので文字どおり代入が行われているとおもいます。 <br>  <br> 以上をまとめると、jmp off は相対アドレスジャンプで jmp seg:off は絶対アドレスジャンプ <br> になり、だからこそ<a href="../test/read.cgi/tech/1024411711/480" target="_blank">&gt;&gt;480</a> とかは自分が読みこまれている場所を意識しなくても <br> 上手く言ったと思うのですが、、 <br>  <br> あと、微かな記憶ですが、 jmp off でも -128 から 127 に入り切らない場合は <br> 絶対アドレスジャンプの命令に置き換わっていた気がしますが、、 <br>  <>
６０９<>sage<>02/07/07 18:19<> <a href="../test/read.cgi/tech/1024411711/632" target="_blank">&gt;&gt;632</a> <br> ザッツライトです(汗 <br> 私の言っていることが不正確でした。 <br>  <br> jmpがどのジャンプかはアセンブラがかってに判断してくれるみたいですね… <br> 普通にアセンブラで書くときは即値かオフセットなのかは全然気にしてなかったもんで．． <br>  <br> MASMとかTASMはかってに絶対アドレス命令に置き換えてくれます。 <br>  <br> （知ったかぶり口調は自制するです…スマソ <>
デフォルトの名無しさん<><>02/07/07 18:33<> おいおい。 <br> ひげぽんがしらぬまにまた成長している・・・ <br>  <br>  <>
592<>sage<>02/07/07 18:45<> <a href="../test/read.cgi/tech/1024411711/632" target="_blank">&gt;&gt;632</a> <br> shortは8bit相対ジャンプ <br> nearは16bit相対ジャンプ <br> farは32bit(seg:off)絶対ジャンプ。 <br>  <br> リアルモードでプリフィックスなしではこうなるはず。 <>
デフォルトの名無しさん<>sage<>02/07/08 00:29<> おれも知りたいコンパイラ。 <>
ひげぽん<><>02/07/08 00:48<> OS開発環境を整えるページを見つけました。 <br> http://www.osdev.org/developers/guide01/ <br>  <br> ただし、gccとnasmの組み合わせが多いですね。 <br> Windows環境でいけるのが、みつからない・・・ <>
デフォルトの名無しさん<>sage<>02/07/08 01:03<> もちろんこれから作るOSは操作でわからないことがあると <br> 幼女声で答えてくれたり気紛れな態度を取ってくれる萌えOSなんだろうな? <br>  <>
デフォルトの名無しさん<>sage<>02/07/08 01:11<> <a href="../test/read.cgi/tech/1024411711/638" target="_blank">&gt;&gt;638</a> <br> ひげぽんが喋ります <>
デフォルトの名無しさん<>sage<>02/07/08 01:29<> <a href="../test/read.cgi/tech/1024411711/639" target="_blank">&gt;&gt;639</a> <br> それは萌え（ｗ <br>  <br> それ以前に喋らすためにはサウンドドライバ書かなきゃいかんだろ <br> 昔のソフトみたいにBEEPで喋らすのもありだが（藁 <>
FreeDOS教徒<>osage<>02/07/08 01:50<> ひげぽんたん‥‥‥ﾊｧﾊｧ（ぉ <>
592<>sage<>02/07/08 02:10<> <a href="../test/read.cgi/tech/1024411711/637" target="_blank">&gt;&gt;637</a> <br> gcc(mingw32)もnasmもWin32で動くぞ。 <>
デフォルトの名無しさん<>sage<>02/07/08 02:52<> <a href="../test/read.cgi/tech/1024411711/637" target="_blank">&gt;&gt;637</a> <br> いくらひげぽんOSがいいものになっても、それを自分でコンパイルするには、 <br> VCとか他の有料アプリを購入しなければ行けないとなればオレ的に萎え〜です。 <br> gccとnasmは萌え〜。 <>
デフォルトの名無しさん<><>02/07/08 10:47<> mingwinってどうやって使うの？ <br> 使い方がいまいち分かんない。 <>
デフォルトの名無しさん<>sage<>02/07/08 12:02<> そもそもそれ何？ <>
デフォルトの名無しさん<>sage<>02/07/08 15:56<> MingW32の間違いでした。 <br>  <br>  <br>  <br> MingW32は発音できないから、ミングウィンか、ミングイン、の方が言いやすいなぁ。（ぼそ） <br> みんぐｗは尻切れっぽい感じが・・・。（ぼそぼそ） <br>  <>
645<><>02/07/08 17:23<> いや、だからさ、そのMingW32って何なのさ。 <br> おせーて、おせーて、おせーてよ。 <>
デフォルトの名無しさん<><>02/07/08 17:26<>  <br> なんかこのスレさ。  <br>  ひげぽんを中心とするエリート軍団と、俺みたいなオッチー軍団に別れちゃったな。  <br>   <br>  あーあ。オッチーにも愛の手(やさしい説明)を。 <>
デフォルトの名無しさん<>sage<>02/07/08 17:36<> ム板でスレ建てるコテハンに優秀な奴はいないと思ってたけどそうでもないんだな <br> とひげぽんを見てふと思ひ <>
デフォルトの名無しさん<><>02/07/08 18:03<> <a href="../test/read.cgi/tech/1024411711/649" target="_blank">&gt;&gt;649</a> <br> しかもよく読めば単発質問な。 <>
デフォルトの名無しさん<>sage<>02/07/08 18:15<> &gt;  ム板でスレ建てるコテハンに優秀な奴はいない <br> 誤解だな。正確には <br> 「ム板で単発質問でスレ建てるコテハンに優秀な奴はいない」だ <br>  <br> ここの1は単発質問をしていないので上記の条件には当てはまらない。 <>
デフォルトの名無しさん<>sage<>02/07/08 18:27<> <a href="../test/read.cgi/tech/1024411711/648" target="_blank">&gt;&gt;648</a> <br> どこが分からない？ <>
デフォルトの名無しさん<><>02/07/08 19:54<> FreeDOS教徒たんの開発環境ってどんな感じょ？ <>
デフォルトの名無しさん<>sage<>02/07/08 20:34<> WIN32で他のOSの開発環境つながりだから聞いてしまえ！ <br>  <br> <a href="../test/read.cgi/tech/1024411711/641" target="_blank">&gt;&gt;641</a> <br> FreeDOSカーネルのコンパイルはこのページの説明でできるの？ <br> http://home.interlink.or.jp/~s-nakani/freedos/build.html <>
デフォルトの名無しさん<><>02/07/08 22:03<> <a href="../test/read.cgi/tech/1024411711/647" target="_blank">&gt;&gt;647</a> <br> Windows上で動くGCC <br> GCCはGNU Compiler Collectionの略（になったらしい。前はGNU C Compiler） <br>  <br> Windows上で動くフリーのコンパイラって事らしい。ちなみにGPL。 <br>  <>
655<><>02/07/08 22:12<> 【追加説明】 <br>  <br> MinGW: Minimalist GNU For Windows <br>  <br> 詳細こちら（英語） <br> http://www.mingw.org/ <br>  <br> tar.gzはいまダウンロード中だけど、どうすれば良いんだ？ <br> ソースっぽいし。 <br> UNIXでコンパイルしてもWindows上で動くのかな？ <br> exe形式になるの？ <br> SJIS通るのかな？ <br> PATH通せばいいだけ？ <>
デフォルトの名無しさん<>sage<>02/07/08 22:19<> SJIS通らないよ。 <br>  <br> それから、gcc3.1系をばらで落とした方が良いかも知れない <>
デフォルトの名無しさん<>sage<>02/07/08 22:30<> <a href="../test/read.cgi/tech/1024411711/656" target="_blank">&gt;&gt;656</a> <br> UNIXでコンパイルすればUNIXでWin32のコードを吐くクロスコンパイラになる。 <br>  <br> <a href="../test/read.cgi/tech/1024411711/657" target="_blank">&gt;&gt;657</a> <br> 別に通らないってことはないだろ。 <br> ただ、特にSJIS対応してないから <br> // ソ <br> とか <br> // 表 <br> とか2バイト目に '\' が入ってると楽しいことになるだけで。 <>
デフォルトの名無しさん<>sage<>02/07/08 22:41<> <a href="../test/read.cgi/tech/1024411711/658" target="_blank">&gt;&gt;658</a> <br> そういうのは通らないというのだ <>
デフォルトの名無しさん<><>02/07/08 23:05<> ｷﾀ━━━━━━(ﾟ∀ﾟ)━━━━━━ !!!!! <br> Latest MinGW-1.0 Snapshot  <br> を解凍して、DOSプロンプトから実行したら動いたよ。 <br>  <>
デフォルトの名無しさん<>sage<>02/07/08 23:16<> 1.0Snapって2.9.4じゃなかった？ <br> 3.1落とせって <>
デフォルトの名無しさん<><>02/07/08 23:26<> ああ。ソースフォージに行けばいいのね。最新はここか。 <br> http://sourceforge.net/projects/mingw/ <br>  <br> ・・・なんか良くわかんないな。 <br> いっぱいファイルあるけど。 <br>  <br> っしかし、なんで、日本語なんだ？ <br> クライアントコードページでも参照してるのかな？ <br>  <br> CVSもどういう事なんだか良くわかんないし、死にそう。 <br> CVS超わかんねーよ。ヽ( `Д)ﾉｳﾜｧｧｧｧﾝ <br> ソースフォージどうなってんだよ。ヽ( `Д)ﾉｳﾜｧｧｧｧﾝ <br>  <>
デフォルトの名無しさん<>sage<>02/07/08 23:28<> VRAM直接アクセスで画面表示出来たよん。 <br> int13h 使うのと違って画面の左上に"2ch"って上書きしちゃうから <br> bochs 使うと "2ch bios" ってなって(･∀･)ﾜﾗｴﾙ!! <br>  <br> ----------------- <br> [ORG 0] <br>  <br> jmp 07C0h:start <br>  <br> start: <br>  <br> hello: <br>         mov  ax, 0B800h <br>         mov  ds, ax <br>         mov  di, 0 <br>         mov  al, '2' <br>         call print <br>         mov  al, 'c' <br>         call print <br>         mov  al, 'h' <br>         call print <br>  <br>         jmp hang <br>  <br> print: <br>         mov [di],al <br>         add di,2 <br>         ret <br>  <br> hang: <br>         jmp hang <br>  <br>         times 510-($-$$) db 0 <br>         dw 0AA55h <br> ---------------- <br> んじゃ、ひげたんこれからもｶﾞﾑﾊﾞﾃﾈ｡ <>
デフォルトの名無しさん<>sage<>02/07/08 23:32<> <a href="../test/read.cgi/tech/1024411711/662" target="_blank">&gt;&gt;662</a> <br> httpリクエストのAccept-Languageヘッダ見てるだけだと思うが。 <>
デフォルトの名無しさん<>sage<>02/07/08 23:39<> http://prdownloads.sourceforge.net/mingw/bunutils-2_12_90-20020518-1.tar.gz?download <br> http://prdownloads.sourceforge.net/mingw/gcc-3_1-core-20020516-1.tar.gz?download <br> http://prdownloads.sourceforge.net/mingw/make-3.79.1-20010722.tar.gz?download <br> http://prdownloads.sourceforge.net/mingw/gdb-5.1.1-1-mingw.tar.gz?download <br> http://prdownloads.sourceforge.net/mingw/mingw-runtime-2.0.tar.gz?download <br> http://prdownloads.sourceforge.net/mingw/w32api-1.5.tar.gz?download <br>  <br> これだけ落とせ。 <br> Ada/Pascalも欲しければどうぞ <>
デフォルトの名無しさん<><>02/07/08 23:46<> とりあえず、スナップショットが実行可能形式配付ファイルだと思われる事は解った。 <br> 最新版は1.0.8。 <br> 386、586、686、って分かれてるな。最適化済みの実行ファイルって事か。 <br> なんかexeっぽいけど何だ？インストールプログラムかな？ <br>  <br> バラバラにダウンロードして組み込んでも良いの？ <br> バージョンでおかしくなったりしないのかな？ <br> 適当にまとめられてる奴無いのかな。 <br>  <>
666<><>02/07/08 23:51<> <a href="../test/read.cgi/tech/1024411711/665" target="_blank">&gt;&gt;665</a> <br> どうもありがとう。 <br>  <br> ＞Ada/Pascalも欲しければどうぞ <br> ああ。なるほど。 <br> 言語ごとにバラバラしてるわけね。 <br> で、GCCはそれをコントロールしてるって事か。 <br>  <br>  <>
デフォルトの名無しさん<>sage<>02/07/08 23:53<> gcc-coreはc/c++コンパイラも含んでる <>
ひげぽん<><>02/07/08 23:54<> なんだか盛り上がって来てうれしいですね。 <br>  <br> 今日は仕事の合間に駄目もとでcygwin gccを試していたがだめでした。 <br>  <br> それで <br> http://www.delorie.com/djgpp/ <br> を見つけました。 <br>  <br> これもWin上で動くgccらしいです。 <br>  <br> でもなんとなく皆さんが紹介してくださった <br> Mingwのほうがよさげなのでそちらにしようかと思っております。 <br>  <br> なんだかそろそろgnu makeをきちんと勉強したほうが良い気が <br> してきました。必要そうだし。 <br>  <br>  <br>  <>
666<><>02/07/08 23:57<> って訳でもないか。 <br> binutilsって何？何かのユーティリティなのかな？ <br> DOS窓だとmanとか無いし、htmlドキュメントをブラウザで開くのかな？ <br>  <br> これらの混在環境って良いのか？ <br> バージョンで混乱したりしないのかな？ <>
ひげぽん<><>02/07/08 23:58<> <a href="../test/read.cgi/tech/1024411711/663" target="_blank">&gt;&gt;663</a> <br> &gt;VRAM直接アクセスで画面表示出来たよん。 <br> それはすごい！！ <br> ありがとう。 <br> 今日はちょっと試す時間が無いので <br> 明日試してみます。 <br> <a href="../test/read.cgi/tech/1024411711/665" target="_blank">&gt;&gt;665</a> <br> 取りまとめありがとう。 <br> 利用させてもらいます。 <br>  <br> ちなみにNASM＆BochsはWin版を使ってます。 <br>  <>
666<>sage<>02/07/09 00:08<> あり？良いのか。 <br>  <br> ああ。良いんだ良いんだ。 <br>  <br> release note.txt読めば良かったんだね。 <br>  <br> 頭混乱してた。恥ずかしいからsage <br>  <br>  <>
ひげぽん<><>02/07/09 01:14<> <a href="../test/read.cgi/tech/1024411711/669" target="_blank">&gt;&gt;669</a> <br> 前言撤回Mingwやめました。 <br> DJGPPにしました。 <br>  <br> 明日はVRAM叩きをまねして、 <br> あとはmakeの勉強。 <br> プロテクトモードへの移行もやらないと <br>  <br> でもなんだか前より増してやる気が出てきた！ <br> 会社でこそっとやろう。。。 <br>  <>
デフォルトの名無しさん<>sage<>02/07/09 01:23<> djgppって32bit DOS extender搭載したDOS用のコンパイラじゃないの？ <br>  <>
デフォルトの名無しさん<><>02/07/09 03:41<> DOSエクステンダ用のコンパイラなら、 <br> TOWNS用にHigh-Cなんてのを持ってたなぁ.... <br> 今はどこかへ行ってしまったが。 <>
デフォルトの名無しさん<>sage<>02/07/09 03:44<> メディア、５インチでよければあるよ、High-C <>
ひげぽん<><>02/07/09 20:58<> <a href="../test/read.cgi/tech/1024411711/674" target="_blank">&gt;&gt;674</a> <br> 以下のようなオプションが使えるので <br> OS開発に使えるようです。 <br>  <br> &gt;-ffreestanding  <br> &gt;produce code that is meant to be run without an OS (ie:kernel code)  <br> &gt;-c  <br> &gt;compile but don't link (creates an object file)  <>
デフォルトの名無しさん<><>02/07/09 22:34<> gcc 使う場合リンカは何使うの？ <br> オレ gcc の標準の ld を使おうかと思っているけど <br> -oformat output-format を何にしたら良いか分からなくて止まってる。 <br> ぐぐっても良く分からないよ〜。 <>
ひげぽん<><>02/07/09 23:08<> <a href="../test/read.cgi/tech/1024411711/678" target="_blank">&gt;&gt;678</a> <br> 試してはいませんが、 <br> OS developer's siteでは、 <br> ld -Ttext 0x100000 --oformat binary -o  <br> ld -o xxx -Ttext 0x0 -e main xxxx.o <br> のようなものを使っていた。 <>
デフォルトの名無しさん<>sage<>02/07/09 23:22<> <a href="../test/read.cgi/tech/1024411711/679" target="_blank">&gt;&gt;679</a> <br> (･∀･)ｿﾚﾀﾞ!! <>
デフォルトの名無しさん<>sage<>02/07/10 00:04<> ちょっと分かった。 <br> windows では分からないけど linux では、 <br> nasm -f elf xxxxx.asm  <br> gcc -c  yyyyy.c <br> ld -oformat binary -Ttext 0x0 -e start xxxxx.o yyyyy.o <br> こんな感じにすると C とアセンブラのくっついた COMファイル(?)ができる。 <br> つまり、バイナリにヘッダとかなくていきなり実行イメージがきているような奴。 <br>  <br> でも、これだと問題点が二つある。 <br> * 最後に AA55 をくっつけることが出来ない。 <br> * C で書いたコードは32bit用コードになっている。 <br>  <br> だから、やっぱり最初の512バイトはオールアセンブリで書いて <br> その中でフロッピーをメモリに読みこんでプロテクトモードにして <br> それから、上のようにして作った実行イメージを呼び出さなきゃダメっぽい。 <>
ひげぽん<><>02/07/10 00:27<> <a href="../test/read.cgi/tech/1024411711/681" target="_blank">&gt;&gt;681</a> <br> 681さん、同じところで悩んでいますよね。 <br>  <br> &gt;だから、やっぱり最初の512バイトはオールアセンブリで書いて <br> &gt;その中でフロッピーをメモリに読みこんでプロテクトモードにして <br> &gt;それから、上のようにして作った実行イメージを呼び出さなきゃダメっぽい <br> プロテクトモードへの移行の前には、 <br> GDTの設定、ITDRの設定などを行わなければいけないんでよね。 <br> その辺のことは、本に書いてあるのですが。 <br>  <br> ブートコードからCでコンパイルした <br> (bootディスク上にある)実行イメージを呼び出す方法が分からない・・・ <br>  <br> (1)実行イメージのサイズがきちんと分かっている場合 <br>    ディスクを必要セクタ分読み込めばよいのでしょうか？ <br> 　 int 13hを使う感じで･･･ <br>  <br> (2)アセンブラで出来たブートイメージと、 <br>    Ｃで書いて出来た実行イメージを <br>    ひとつのイメージにまとめて <br>    diskに対して ddコマンド等で書き込んでやればよいのでしょうか？ <br>  <br> 今日は一日中悩みました。 <br> いろいろ実験したのですが、 <br> Cで実行イメージを作成しようにも、そいつが読み込まれて <br> 動作したかを確認する方法がないっす。 <br> int main() { <br> } <br> と空のmainを書けばライブラリに依存しないのでOKかと思ったのだが <br> 動作確認が出来ない(涙） <>
デフォルトの名無しさん<><>02/07/10 00:47<> プロテクトモード移行は 2nd boot でやった方が良さそうな気がして来た。 <br> で、『はじめて読む486』では、MakeSegDesc とかいう関数作ったりして <br> 大がかりだけど、eota の boot/2nd/start16.S とか見ると <br> ディスクリプタを最初っから直書きしていて、こうした方が楽な気がする。 <br> できれば、『はじめて読む486』のようにC を使って書きたいところだけど、 <br> gcc に 16 bit 用コードを吐きださせる方法が分からないから。 <br> アセンブリ使うしかなさそう。 <br>  <br> (1) そうだと思う。 <br> (2) 1st boot でプロテクトモードにするならそれでOKだと思うけど、 <br>     2nd boot でプロテクトモードに切り替えるなら2nd boot の先頭はアセンブリの <br>    コードにしておいて(プロテクトモードに切り替えて)そこから C の関数を <br>    呼べば良いと思う。 <br>  <br> 動作確認は<a href="../test/read.cgi/tech/1024411711/663" target="_blank">&gt;&gt;663</a> の VRAM直接アクセスをCで書けば良いと思う。 <br> /boot/2nd/lib.c の write_vram が参考になる。 <br> 上手く行かなければ、 <br> int c_func() <br> { <br>         return 'A'; <br> } <br> という関数をアセンブリからcallすれば ax に 'A'が入る。それを <br> アセンブリで画面表示すれば良いと思う。 <br> どうしてもダメならリアルモードに戻してBIOSコールってことになるかな。 <br>  <br>  <>
デフォルトの名無しさん<><>02/07/10 00:51<> プロテクトモード移行は 2nd boot でやった方が良さそうな気がして来た。 <br> で、『はじめて読む486』では、MakeSegDesc とかいう関数作ったりして <br> 大がかりだけど、eota の boot/2nd/start16.S とか見ると <br> ディスクリプタを最初っから直書きしていて、こうした方が楽な気がする。 <br> できれば、『はじめて読む486』のようにC を使って書きたいところだけど、 <br> gcc に 16 bit 用コードを吐きださせる方法が分からないから。 <br> アセンブリ使うしかなさそう。 <br>  <br> (1) そうだと思う。 <br> (2) 1st boot でプロテクトモードにするならそれでOKだと思うけど、 <br> 2nd boot でプロテクトモードに切り替えるなら2nd boot の先頭はアセンブリの <br> コードにしておいて(プロテクトモードに切り替えて)そこから C の関数を <br> 呼べば良いと思う。 <br>  <br> 動作確認は<a href="../test/read.cgi/tech/1024411711/663" target="_blank">&gt;&gt;663</a> の VRAM直接アクセスをCで書けば良いと思う。 <br> /boot/2nd/lib.c の write_vram が参考になる。 <br> 上手く行かなければ、 <br> int c_func() <br> { <br> return 'A'; <br> } <br> という関数をアセンブリからcallすれば ax に 'A'が入る。それを <br> アセンブリで画面表示すれば良いと思う。 <br> どうしてもダメならリアルモードに戻してBIOSコールってことになるかな。 <>
684<><>02/07/10 00:51<> 死ぬほどミスった。<a href="../test/read.cgi/tech/1024411711/683" target="_blank">&gt;&gt;683</a>他スマソ <>
デフォルトの名無しさん<>sage<>02/07/10 00:56<> <a href="../test/read.cgi/tech/1024411711/682" target="_blank">&gt;&gt;682</a> <br> スタートアップルーチンの存在は知らないんだな。 <>
デフォルトの名無しさん<><>02/07/10 00:58<> とりあえず、今後進みやすい道のりは、 <br>  <br> step1  <br>  1st boot, 2nd bootともにオールアセンブリで、 BIOS を使って "Hello higepon" <br>  <br> step1.5 <br>  1st boot, 2nd bootともにオールアセンブリで、 VRAM直接アクセスで "Hello higepon" <br>  <br> step 2 <br>  1st boot, 2nd bootともにオールアセンブリで、2nd bootでプロテクトモードにして <br>   "Hello higepon"(もちろん VRAM アクセス) <br>  <br> step 3 <br>  1st boot はオールアセンブリ <br>  2nd boot はアセンブリ+Ｃ言語 <br>   アセンブリ部分でプロテクトモードにして  C の関数を呼び出し <br>   C の関数が "Hello higepon" <br>  <br> step 2.9 ( step 3 がダメだった場合) <br> C の関数を <br> char *higepon_string() <br> { <br>     const static char buf[]="Hello higepon"; <br>     return buf; <br> } <br> とかしといてそれを アセンブリで表示。 <br>  <br> って感じでどう？ <br> step 1 で作った 1st boot はそのままずっと使い、 以後は 2nd boot 部分だけ <br> 書き換えれば良くなるでしょ？ <>
デフォルトの名無しさん<>sage<>02/07/10 01:01<> <a href="../test/read.cgi/tech/1024411711/686" target="_blank">&gt;&gt;686</a> <br> つまり、普通にコンパイルしたんではスタートアップルーチンがあるから <br> 上手く行かないって言いたい？ <>
デフォルトの名無しさん<><>02/07/10 17:55<> あれ？スタートアップルーチンってリンカがつけるもんじゃなかったっけ? <>
デフォルトの名無しさん<>sage<>02/07/10 17:58<> 違う <>
デフォルトの名無しさん<>sage<>02/07/10 17:59<> 正確に言うとエントリポイント（スタートアップルーチン）を含んだ <br> オブジェクトファイルやライブラリを、大抵のリンカが暗黙の内にリンクしているだけで、 <br> それを回避するオプションが付いているはず <>
ひげぽん<>sage<>02/07/10 21:47<> <a href="../test/read.cgi/tech/1024411711/683" target="_blank">&gt;&gt;683</a>,684,687 <br> ありがとう。 <br>  <br> &gt;step1.5 <br> &gt;1st boot, 2nd bootともにオールアセンブリで、 VRAM直接アクセスで "Hello higepon" <br> を書いてみました。 <br>  <>
ひげぽん<>sage<>02/07/10 21:48<> boot.mac <br>  <br> ;------------------------------------------------------------------------------- <br> ;&nbsp;Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;PRINTSTR <br> ;&nbsp;Description&nbsp;:&nbsp;print&nbsp;string <br> ;&nbsp;Param1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;string(db) <br> ;------------------------------------------------------------------------------- <br> %macro&nbsp;PRINTSTR&nbsp;1 <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;push&nbsp;ax <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;si,&nbsp;%1 <br> %%hige: <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lodsb&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;set&nbsp;al=current&nbsp;character&nbsp;at&nbsp;si <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cmp&nbsp;al,&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;if&nbsp;al&nbsp;==&nbsp;0&nbsp;then <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;je&nbsp;&nbsp;%%end&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;end&nbsp;this&nbsp;macro <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ah,&nbsp;0Eh&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;print <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;bh,&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;the&nbsp;charcter&nbsp;which&nbsp;is <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;10h&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;at&nbsp;al <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jmp&nbsp;%%hige&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;next&nbsp;character <br> %%end: <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pop&nbsp;ax <br> %endmacro <br>  <>
ひげぽん<>sage<>02/07/10 21:49<> ;------------------------------------------------------------------------------- <br> ;&nbsp;Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;higeboot.asm <br> ;&nbsp;Description&nbsp;:&nbsp;boot&nbsp;from&nbsp;floppy&nbsp;disk&nbsp;and&nbsp;echo&nbsp;String <br> ;&nbsp;Revision&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;$Revision: 1.1 $ <br> ;&nbsp;Copyright&nbsp;(c)&nbsp;2002&nbsp;HigePon <br> ;&nbsp;WITHOUT&nbsp;ANY&nbsp;WARRANTY <br> ;------------------------------------------------------------------------------- <br>  <br> %ifndef&nbsp;BOOT_MACRO <br> %define&nbsp;BOOT_MACRO <br> &nbsp;&nbsp;&nbsp;&nbsp;%include&nbsp;'boot.mac' <br> %endif <br>  <br> %include&nbsp;'firstboot.asm' <br> %include&nbsp;'secondboot.asm' <br>  <>
ひげぽん<>sage<>02/07/10 21:51<> ;------------------------------------------------------------------------------- <br> ;&nbsp;Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;firstboot.asm <br> ;&nbsp;Description&nbsp;:&nbsp;boot&nbsp;from&nbsp;floppy&nbsp;disk&nbsp;and&nbsp;echo&nbsp;String <br> ;&nbsp;Revision&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;$Revision: 1.1 $ <br> ;&nbsp;Copyright&nbsp;(c)&nbsp;2002&nbsp;HigePon <br> ;&nbsp;WITHOUT&nbsp;ANY&nbsp;WARRANTY <br> ;------------------------------------------------------------------------------- <br>  <br> [ORG&nbsp;0] <br>  <br> ;&nbsp;use&nbsp;segment&nbsp;07C0h&nbsp;and&nbsp;offset&nbsp;is&nbsp;address&nbsp;of&nbsp;start <br> ;&nbsp;cs&nbsp;=&nbsp;07Coh <br> jmp&nbsp;07C0h:start <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;osStart&nbsp;db&nbsp;&nbsp;'Hige&nbsp;start...',&nbsp;0dh,&nbsp;0ah,&nbsp;00h <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;resetOk&nbsp;db&nbsp;&nbsp;'disk&nbsp;reset&nbsp;ok',&nbsp;0dh,&nbsp;0ah,&nbsp;00h <br>  <br> start: <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cli&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;disable&nbsp;interrupt <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ax,&nbsp;cs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;code&nbsp;segment&nbsp;address&nbsp;is&nbsp;07C0h <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ds,&nbsp;ax&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;when&nbsp;data&nbsp;access,&nbsp;use&nbsp;07C0h&nbsp;segment <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ss,&nbsp;ax&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;when&nbsp;use&nbsp;stack,&nbsp;user&nbsp;07C0h&nbsp;segment <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sti&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;enable&nbsp;interrupt <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PRINTSTR&nbsp;osStart <br>  <br> reset: <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ax,&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;reset <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;dl,&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;drive&nbsp;0 <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;13h&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;; <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jc&nbsp;&nbsp;reset&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;if&nbsp;failed&nbsp;try&nbsp;again <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PRINTSTR&nbsp;resetOk <br>  <>
ひげぽん<>sage<>02/07/10 21:51<> read: <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ax,&nbsp;1000h <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;es,&nbsp;ax&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;es:bx&nbsp;is <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;bx,&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;data&nbsp;buffer <br>  <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ah,&nbsp;02h&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;read&nbsp;sectors&nbsp;into&nbsp;memory <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;al,&nbsp;5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;number&nbsp;of&nbsp;sectors&nbsp;to&nbsp;read <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ch,&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;low&nbsp;eight&nbsp;bits&nbsp;of&nbsp;cylinder&nbsp;number <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;cl,&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;sector&nbsp;number <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;dh,&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;head&nbsp;number <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;dl,&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;drive&nbsp;number <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;13h&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;read! <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jc&nbsp;&nbsp;read <br>  <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jmp&nbsp;1000h:0000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;jump&nbsp;to&nbsp;the&nbsp;secondboot <br>  <br> forever: <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jmp&nbsp;forever <br>  <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;times&nbsp;510-($-$$)&nbsp;db&nbsp;0 <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dw&nbsp;0AA55h <br>  <>
ひげぽん<><>02/07/10 21:52<> ;------------------------------------------------------------------------------- <br> ;&nbsp;Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;secondboot.asm <br> ;&nbsp;Description&nbsp;:&nbsp;firstboot&nbsp;read&nbsp;this&nbsp;from&nbsp;disk&nbsp;and&nbsp;execute. <br> ;&nbsp;Revision&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;$Revision: 1.1 $ <br> ;&nbsp;Copyright&nbsp;(c)&nbsp;2002&nbsp;HigePon <br> ;&nbsp;WITHOUT&nbsp;ANY&nbsp;WARRANTY <br> ;------------------------------------------------------------------------------- <br> second: <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;ax&nbsp;,cs <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;ss,&nbsp;ax <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;ax,&nbsp;0B800h <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;ds,&nbsp;ax <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;di,&nbsp;0 <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;al,&nbsp;'2' <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;call&nbsp;print <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;al,&nbsp;'c' <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;call&nbsp;print <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;al,&nbsp;'h' <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;call&nbsp;print <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jmp&nbsp;hang <br>  <br> print: <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;[di],&nbsp;al <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;add&nbsp;di,&nbsp;2 <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ret <br>  <br> hang: <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jmp&nbsp;hang <br>  <>
ひげぽん<><>02/07/10 21:53<> &gt;663さんに感謝 <>
デフォルトの名無しさん<><>02/07/10 21:55<> ひげぽんさん、サイト作ろうよ <br>  <>
デフォルトの名無しさん<>sage<>02/07/10 22:00<> プロテクトモードに移行したあとの次の命令で、Bochsは3rd exeptionって言ってくる <br> んですがなにが原因なんでしょう？誰か助けてー <>
デフォルトの名無しさん<><>02/07/10 22:06<> /cpu/exception.cppによれば, <br> --- <br>   BX_CPU_THIS_PTR errorno++; <br>   if (BX_CPU_THIS_PTR errorno &gt;= 3) { <br>     BX_PANIC(("exception(): 3rd exception with no resolution")); <br>     BX_ERROR(("WARNING: Any simulation after this point is completely bogus.")); <br> #if BX_DEBUGGER <br>     bx_guard.special_unwind_stack = true; <br> #endif <br>     return; <br>     } <br> --- <br>  <br> 3回目の割り込みは発生しちゃだめって事らしいヨ <>
デフォルトの名無しさん<>sage<>02/07/10 22:15<> <a href="../test/read.cgi/tech/1024411711/700" target="_blank">&gt;&gt;700</a> <br> それ俺もなった。で試行錯誤の結果やっと上手くいった。 <br> それ貼るからちょっと待ってて。 <>
デフォルトの名無しさん<>sage<>02/07/10 22:38<> 3rd exception を発生させずにプロテクトモードに移行できたバージョン 1/2 <br>  <br> 基本的には、『はじめて(略』に従ったけど、一部変えてある <br> 2nd-boot は俺は 0x0100 セグメントに読みこまれるように <br> してあるから リニアアドレスに変換する部分では 0x1000 を足している。 <br> もっと上手い方法がありそうだけど分からない。また、『はじめて(略』に <br> 書かれている offset は nasmでは使えなかった。 <br> 最初はこのリニアアドレス変換をしていなくて 3rd exception しまくってた。 <br> ------------ <br> [ORG 0] <br>  <br> bits16 <br> lgdt[gdtr] <br>  <br> RealToProto <br> cli <br> moveax,cr0 <br> oreax,1 <br> movcr0,eax <br> ;; <br> jmpflush_q1 <br>  <br> gdtr:dw256 * 8 -1  ; ここは適当 ( eota に従った ) <br> ddgdt  + 0x1000 ; リニアアドレスに変換 <br>  <br> gdt: <br> dw0; limitL <br> dw0; baseL <br> db0; baseM <br> db0; type <br> db0; limitH <br> db0; baseH <br> ;; seg-08 (code-seg) <br> dw0xffff; limitL <br> dw0; baseL <br> db0; baseM <br> db0x9a; type code <br> db0xcf; limitH <br> db0; baseH <br> ;; seg-10 (data-seg) <br> dw0xffff; limitL <br> dw0; baseL <br> db0; baseM <br> db0x92; type data <br> db0xcf; limitH <br> db0; baseH <br> ;; seg-18 (stack-seg) <br> dw0; limitL <br> dw0; baseL <br> db0; baseM <br> db0x96; type data <br> db0xc0; limitH <br> db0; baseH <br> ; -------------------- 大きすぎて一度に書き込めないので一度ここで切る。 <br>  <>
デフォルトの名無しさん<>sage<>02/07/10 22:39<> <a href="../test/read.cgi/tech/1024411711/703" target="_blank">&gt;&gt;703</a> の続き <br> 3rd exception を発生させずにプロテクトモードに移行できたバージョン 2/2 <br> ------------ <br> bits32 <br>  <br> flush_q1: <br> db0eah <br> dw set_cs_desc1 + 0x1000  ; リニアアドレスに変換 <br> dw08h  ; 08h  は code-segment <br>  <br> set_cs_desc1: <br> moveax,10h  ; 10h は data-segment <br> movds,ax <br> moves,ax <br> moveax,18h  ; 18h は stack-segment <br> movss,ax <br> movesp,0x1000   ; ここが 0 だとなぜかエラー <br>  <br> hello:movedi,0B8000h <br> moval,'2' <br> callprint <br> moval,'c' <br> callprint <br> moval,'h' <br> callprint <br>  <br> hang: <br> jmphang <br>  <br> printmov[edi],al <br> addedi,2 <br> ret <br> times512-($-$$)db 0 <br>  <>
703=704<>sage<>02/07/10 22:40<> ごめんタブが消えた、、、 <>
デフォルトの名無しさん<>sage<>02/07/10 22:59<> <a href="../test/read.cgi/tech/1024411711/705" target="_blank">&gt;&gt;705</a> <br> どうもありがとうございました。これから格闘してみます。 <br> ここまではなんとかなりましたが、ここからが厳しいところですね。 <br> 頑張りたいと思います <>
ひげぽん<><>02/07/10 23:01<> <a href="../test/read.cgi/tech/1024411711/703" target="_blank">&gt;&gt;703</a><a href="../test/read.cgi/tech/1024411711/704" target="_blank">&gt;&gt;704</a> <br> ありがとう！！ <br> 先を越されてしまってくやしいっす。 <br> 勉強不足です。反省。 <br>  <>
デフォルトの名無しさん<><>02/07/11 00:46<> 少なくとも3人は出来るやつがいる模様。（ひげぽんも含む） <br> お前ら全員で2ch OS作ってください。 <br>  <>
デフォルトの名無しさん<>sage<>02/07/11 00:56<> もちろん 2ch 運営に最適化されたOSということで (w <>
デフォルトの名無しさん<>sage<>02/07/11 01:08<> 運営ですか！！！ <>
デフォルトの名無しさん<>sage<>02/07/11 01:15<> 作っても夜勤が採用しないワナ。 <>
デフォルトの名無しさん<>sage<>02/07/11 01:18<> 説得汁。 <>
デフォルトの名無しさん<>sage<>02/07/11 01:21<> 作れないうちから心配するなアフ <>
デフォルトの名無しさん<><>02/07/11 01:24<> &gt; 704  <br>  &gt; movesp,0x1000 ; ここが 0 だとなぜかエラー  <br>  ０だとスタックに積んだとたんに逝っちゃうよ。  <br>   <>
デフォルトの名無しさん<>sage<>02/07/11 01:33<> 無事動きましたー。csが1000ならアドレスは10000だということを忘れてました。 <br> こんにちはプロテクトモード <>
デフォルトの名無しさん<>sage<>02/07/11 02:12<> 割り込みについて調べていたらこんなページをみつけました。 <br> ttp://poli.cs.vsb.cz/misc/rbint/ix/index.html <br>  <>
デフォルトの名無しさん<>sage<>02/07/11 03:32<> <a href="../test/read.cgi/tech/1024411711/716" target="_blank">&gt;&gt;716</a> <br> <a href="../test/read.cgi/tech/1024411711/507-508" target="_blank">&gt;&gt;507-508</a> <br> 確か、ベクターにwinhelp版があったはず。 <>
デフォルトの名無しさん<>sage<>02/07/11 12:48<> とりあえず、2ndローダでプロテクトモードに切り替えるところまで成功。 <br> PE形式のカーネルのロードは面倒そうだ…。 <>
デフォルトの名無しさん<>sage<>02/07/11 13:45<> 皆さんブートローダの次のステップをどのようにする予定ですか？ <>
デフォルトの名無しさん<>sage<>02/07/11 17:50<> メモリマネージャとタスクマネージャ <>
デフォルトの名無しさん<>sage<>02/07/11 18:35<> 文字出力、ファイルＩＯ、プロセス終了のファンクションリクエストくらいあれば、とりあえずいろいろ動かせる。 <>
デフォルトの名無しさん<>sage<>02/07/11 18:44<> <a href="../test/read.cgi/tech/1024411711/720" target="_blank">&gt;&gt;720</a> <br> いきなりは無理では。 <br>  <br> まず、 <br> 1. とりあえず何もしなくていいから、OSを終了するシステムコール(Halt) <br> 2. 1文字ずつコンソールに出力するシステムコール(Input) <br> 3. キーボードから1文字ずつ入力を受け取るシステムコール(Output、後回しで <br>    いいかも)  <br> 4. ディスクのセクタを直接指定して読み書きするシステムコール(Read, Write) <br> 5. 特権モードのままでいいし、特定の物理メモリ上でいいし、一つしか実行で <br>    きず、呼び出したタスクに戻ってこなくていいから、ディスクから読み込んだ <br>    バイナリを展開し、実行するシステムコール(Exec) <br> 6. とりあえず何もしなくていいから、タスクを終了するシステムコール(Exit) <br> を実装し、 <br>  <br> ブートローダ <br> ↓ <br> カーネル <br> ↓ <br> 文字を表示し、入力を受け取り、特定のセクタの内容を読み込み表示し、特定の <br> セクタに適当なデータを書込み、終了する、Cで書かれたプログラム <br>  <br> という感じで動作するものを作ってみるのはどうだろう。 <br>  <br> そのあとで、ユーザモードで動作し、複数展開可能で、呼び出したタスクに戻って <br> くるExecを実装し、ユーザモードで動く簡単なコマンドラインシェルを実装する、 <br> というのはどう？ <>
722<>sage<>02/07/11 18:56<> <a href="../test/read.cgi/tech/1024411711/721" target="_blank">&gt;&gt;721</a> <br> あ、かぶった。 <br>  <br> <a href="../test/read.cgi/tech/1024411711/722" target="_blank">&gt;&gt;722</a>をちょい訂正。 <br>  <br> &gt; 2. 1文字ずつコンソールに出力するシステムコール(Input) <br> &gt; 3. キーボードから1文字ずつ入力を受け取るシステムコール(Output) <br>  <br> 名前が逆じゃん、出力がOutputで入力がInputね。 <>
デフォルトの名無しさん<><>02/07/11 19:12<> ネイティブな開発はよくわからんが <br> システムコールの設計は慎重にやってくれよｐ <>
デフォルトの名無しさん<>sage<>02/07/11 19:39<> <a href="../test/read.cgi/tech/1024411711/724" target="_blank">&gt;&gt;724</a> <br> なんで？ <>
722<>sage<>02/07/11 19:48<> <a href="../test/read.cgi/tech/1024411711/724" target="_blank">&gt;&gt;724</a> <br> 別に<a href="../test/read.cgi/tech/1024411711/722" target="_blank">&gt;&gt;722</a>のシステムコールを最後までそのまま使えって意味じゃないよ。 <br> あくまで暫定的なもの。ファイルシステムがなければ、openやread、write、 <br> close等のファイルに関するシステムコールなんて作れないでしょ？ファイル <br> システムやメモリマネージャが出来たら、そのときシステムコールを作り <br> 直せばいい。 <>
デフォルトの名無しさん<>sage<>02/07/11 19:57<> 実務開発で言うなら、いわば技術検証（と言う名のお勉強）でしょ？ <br> まだ設計に入る段階じゃないと思われ。 <br> 勿論、先に設計が来る方が良いけど、未経験なんだから良いんじゃないの？ <>
724<><>02/07/11 21:16<> だよねーﾃﾍﾍぼくちゃん先走っちゃったｱﾊﾊ <>
ひげぽん<><>02/07/11 22:58<> そのうちlibcを採用しようかと･･･ <br>  <>
718<>sage<>02/07/12 01:18<> libcなら組込向けのnewlibが扱いやすいかも。 <br>  <br> http://sources.redhat.com/newlib/ <>
718<>sage<>02/07/12 01:27<> OSに依存しないドライバインターフェース…らしい。 <br>  <br> Uniform Driver Interface <br> http://www.projectudi.org/ <br>  <>
718<>sage<>02/07/12 03:09<> ELF関連 <br>  <br> FreeBSDのelf(5)。 <br> http://www.jp.freebsd.org/cgi/mroff.cgi?subdir=man&lc=1&cmd=&man=elf&dir=jpman-4.6.0%2Fman&sect=0 <br>  <br> UNIX USERの掲載記事一覧。 <br> ELF仕様書へのリンクや"Linkers and Loaders"のオンライン公開本等がある。 <br> http://www.skyfree.org/jpn/unixuser/ <br>  <>
デフォルトの名無しさん<>sage<>02/07/12 03:41<> いま、 eota の boot/2nd/console.c とか boot/2nd/lib.c あたりを <br> 読んでる。lib.c の set_cursor_pos が、こんな感じになってる。 <br> ------------------------- <br> void <br> set_cursor_pos (int x, int y) <br> { <br>   int   addr; <br>  <br>   lock (); <br>   addr = CURSOR_POS (x, y); <br> /*  addr *= 2; */ <br>  <br>   outb (GDC_ADDR, 0x0e); <br>   outb (GDC_DATA, (addr &gt;&gt; 8) & 0xff); <br>   outb (GDC_ADDR, 0x0f); <br>   outb (GDC_DATA, addr & 0xff); <br>   unlock (); <br> } <br> ----------------------- <br> lock(), unlock は各々 cli,sti を実行するだけ。 <br>  <br> で質問だけど、 <br> (1)  こんな風に IO ポートのどこに何を書けばどうなるのか、 <br> ってのはどっかにまとめて載ってない？ <br>  <br> (2) なんでここで割り込みを禁止する必要があるの？ <br> まあ漠然とは、 <br> outb(GDC_ADDR,xxxx) と outb(GDC_DATA,xxxx) の間に <br> 余計なIO ポートアクセスがあったらまずい気がするなぁと感じるけど <br> それであってる？ <>
718<>sage<>02/07/12 06:58<> mingwでld --helpしたらelf32-i386とか出てたからELFバイナリ吐けると思ったらダメらしい。 <br> 素直にPEにしておくか。 <br>  <br> <a href="../test/read.cgi/tech/1024411711/733" target="_blank">&gt;&gt;733</a> <br> (1) <br> http://www.oadg.or.jp/tosho/index.htm#techref <br>  <br> (2) <br> vsync割り込みハンドラでグラフィックコントローラを叩く可能性を考えてるのかと。 <>
デフォルトの名無しさん<>sage<>02/07/12 09:03<> <a href="../test/read.cgi/tech/1024411711/722" target="_blank">&gt;&gt;722</a> <br> かなり賛成。ちょうど良い目標ﾀﾞﾈ。 <br> ただちょっと分からなかったんだけど <a href="../test/read.cgi/tech/1024411711/722" target="_blank">&gt;&gt;722</a> の 5 はマルチタスクを <br> 想定しているの？ オレはシングルタスクで call とか jmp 使えば <br> いいと思うんだけど。 <br> あとバイナリを展開ってどの程度のこと考えてる？ <br> オレは実行イメージそのままで良いと思ってる。(固定アドレスに置くんだから) <br> あと、 <a href="../test/read.cgi/tech/1024411711/722" target="_blank">&gt;&gt;722</a> では触れられてないけど、VRAMとか IOポートにアクセスするのは <br>  <br> step 1   <br> ライブラリっぽいものを書いてそれをプログラムにスタティックリンクさせる。 <br>  <br> step 2 <br> システムコールとして実装 <br>  <br> という段階を踏んだ方が良さそう。 <br> で確認なんだけど step 2では、ソフトウェア割り込み使えばいいんだっけ？ <br> そして割り込みを発生させる関数をスタティックリンクすればＯＫ？ <>
デフォルトの名無しさん<>sage<>02/07/12 10:45<> <a href="../test/read.cgi/tech/1024411711/735" target="_blank">&gt;&gt;735</a> <br> システムコールの呼び出しにはコールゲートかトラップゲートを使うかと。 <br>  <>
riarutyuubou<>sage<>02/07/12 18:12<> きょう始めてよむ４８６が届いた <br> ７月１１日に発送してもらったんだけど、はじめて読む４８６の１２刷発行が <br> ７月１１日だった。（わら <br> はじめて読む8086の方がまだだ、本来こっちの方が先に届いてほしいんだが。 <>
デフォルトの名無しさん<>sage<>02/07/12 19:25<> そんなに売れてるのか… &gt; はじめて読む <br>  <br> 折れもリア厨のころに買って読んで、サンプル必死に打ってた気がする。 <br> ８０８６の方は英語がOKなら、上でｶﾞｲｼｭﾂのInterrupt Listとかで十分間に合う。はず。 <>
manko_chinko==737 </b>◆c2rpKRNM <b><>sage<>02/07/12 19:43<> <a href="../test/read.cgi/tech/1024411711/738" target="_blank">&gt;&gt;738</a> <br> どうも <br> 僕は英語駄目なんで（英検三級がやっととれたレベル）、日本国内で日本語を使用した <br> 86系アセンブラの解説ページで勉強しようと思うのですが、、、 <br>  <>
manko_chinko==737 </b>◆c2rpKRNM <b><>sage<>02/07/12 19:51<> 始めて読む8086の注文はキャンセルしました <br>  <>
FreeDOS教徒<>osage<>02/07/12 20:23<> 超亀レスですごめんなさい。  <br>    <br>  <a href="../test/read.cgi/tech/1024411711/653" target="_blank">&gt;&gt;653</a>  <br>  NASMだけです。Ｃ言語を使うほどでもありませんし。  <br>    <br>  <a href="../test/read.cgi/tech/1024411711/654" target="_blank">&gt;&gt;654</a>  <br>  あとsuppl.zipが要るかも。ソースの\supplに説明があるはず。 <>
653<>sage<>02/07/12 20:31<> オールアセンブラ　Σヽ(´i i｀)ノ　ぬりがとう <>
デフォルトの名無しさん<><>02/07/12 23:13<> Ｃ言語から呼び出すときのアセンブラのコードで <br> 破壊していいレジスタはどれ？ <br> eax,edx は戻り値に使われるから分かるけど、他のは？ <br>  <br> ぐぐったら windows での話は出てきたけど、これってコンパイラ依存の <br> 話だからgcc なら別だよな？ <>
デフォルトの名無しさん<> sage <>02/07/12 23:21<> そんなもん、gccで関数をasm出力すれば <br> わかるだろうに。 <>
デフォルトの名無しさん<>sage<>02/07/12 23:25<> edi <>
654<>sage<>02/07/13 22:45<> <a href="../test/read.cgi/tech/1024411711/741" target="_blank">&gt;&gt;741</a> <br> Thank you. <br> これから調べてみます <>
デフォルトの名無しさん<>sage<>02/07/13 23:12<> プロテクトモードでjmpするとエラーになってしまう．．．なんでだー <>
FreeDOS教徒<>osage<>02/07/13 23:27<> <a href="../test/read.cgi/tech/1024411711/654" target="_blank">&gt;&gt;654</a> <br> ヴぁー、申し訳ない。あれcommand.comの作り方だった‥‥ <br> カーネルはあそこの説明のとおりでよかったです。 <br>  <br> しかもスレ沈めまくってさらに申し訳ない（汗 <>
ひげぽん<><>02/07/13 23:36<> おくれてしまったひでぽんです。 <br> どうしても3rd exception with no resolutionが出てしまいます。 <br> どなたかアドバイスをいただけたら幸いです。 <br> 以下エラーになるソースを貼らせていただきます。 <br>  <br>  <br>  <>
ひげぽん<>sage<>02/07/13 23:37<>  <br> RealToProtect: <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lgdt&nbsp;[gdtr]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;load&nbsp;gdtr <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cli&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;disable&nbsp;interrupt <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;eax,&nbsp;cr0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;real <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;or&nbsp;&nbsp;&nbsp;eax,&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;to <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;cr0,&nbsp;eax&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;protect <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jmp&nbsp;&nbsp;flush_q1 <br>  <br> flush_q1: <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db&nbsp;0eah <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dw&nbsp;set_cs_desc1&nbsp;+&nbsp;1000h <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dw&nbsp;08h <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jmp&nbsp;&nbsp;hang <br>  <br> set_cs_desc1: <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;ax,&nbsp;10h <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;ds,&nbsp;ax <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;es,&nbsp;ax <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;ax,&nbsp;18h <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;ss,&nbsp;ax <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;sp,&nbsp;0x1000 <>
ひげぽん<>sage<>02/07/13 23:39<> ;------------------------------------------------------------------------------- <br> ;&nbsp;GDT&nbsp;definition <br> ;------------------------------------------------------------------------------- <br> gdtr: <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dw&nbsp;gdt_end&nbsp;-&nbsp;gdt0&nbsp;-&nbsp;1&nbsp;&nbsp;&nbsp;;&nbsp;gdt&nbsp;limit <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dd&nbsp;gdt0&nbsp;+&nbsp;1000h&nbsp;*&nbsp;16&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;start&nbsp;adderess <br>  <br> gdt0:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;segment&nbsp;00 <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dw&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;segment&nbsp;limitL <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dw&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;segment&nbsp;baseL <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;segment&nbsp;baseM <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;segment&nbsp;type <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;segment&nbsp;limitH <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;segment&nbsp;baseH <br>  <br> gdt08:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;segment&nbsp;08(code&nbsp;segment) <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dw&nbsp;0xffff&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;segment&nbsp;limitL <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dw&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;segment&nbsp;baseL <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;segment&nbsp;baseM <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db&nbsp;0x9a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Type&nbsp;Code <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db&nbsp;0xcf&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;segment&nbsp;limitH <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;segment&nbsp;baseH <br>  <>
ひげぽん<>sage<>02/07/13 23:39<> gdt10:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;segment&nbsp;10(data&nbsp;segment) <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dw&nbsp;0xffff&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;segment&nbsp;limitL <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dw&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;segment&nbsp;baseL <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;segment&nbsp;baseM <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db&nbsp;0x92&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Type&nbsp;Data <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db&nbsp;0xcf&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;segment&nbsp;limitH <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;segment&nbsp;baseH <br>  <br> gdt18:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;segment&nbsp;18(stack&nbsp;segment) <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dw&nbsp;0xffff&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;segment&nbsp;limitL <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dw&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;segment&nbsp;baseL <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;segment&nbsp;baseM <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db&nbsp;0x96&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Type&nbsp;Stack <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db&nbsp;0xcf&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;segment&nbsp;limitH <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;segment&nbsp;baseH <br>  <br> gdt_end:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;end&nbsp;of&nbsp;gdt <br>  <br> hang: <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jmp&nbsp;hang <br> print: <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;[edi],&nbsp;al <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;add&nbsp;edi&nbsp;&nbsp;,&nbsp;2 <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ret <br>  <>
デフォルトの名無しさん<>sage<>02/07/13 23:49<> <a href="../test/read.cgi/tech/1024411711/749" target="_blank">&gt;&gt;749</a> <br> gdt08のセグメントベースは10000hにしてみてはどうでしょうか？ <br> 違うかな <>
デフォルトの名無しさん<>sage<>02/07/13 23:55<> <a href="../test/read.cgi/tech/1024411711/747" target="_blank">&gt;&gt;747</a> <br> は既に解決してますか？まだなら俺にちょっと心当たりがあります。 <br> もしかして、cs を 08h とかそう言うGDTRで設定したセグメントにする前の段階の話じゃないですか？ <>
デフォルトの名無しさん<>sage<>02/07/14 00:02<> <a href="../test/read.cgi/tech/1024411711/750" target="_blank">&gt;&gt;750</a> と <a href="../test/read.cgi/tech/1024411711/751" target="_blank">&gt;&gt;751</a> の間に抜けてるものはない？ コピペミスじゃない？ <br> mov sp,0x1000 のあとに jmp が必要でしょ。 <>
ひげぽん<>sage<>02/07/14 00:03<> <a href="../test/read.cgi/tech/1024411711/753" target="_blank">&gt;&gt;753</a> <br> ありがとうございます。 <br> gdt08:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;segment&nbsp;08(code&nbsp;segment) <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dw&nbsp;0xffff&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;segment&nbsp;limitL <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dw&nbsp;0x00000001&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;segment&nbsp;baseL <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;segment&nbsp;baseM <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db&nbsp;0x9a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Type&nbsp;Code <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db&nbsp;0xcf&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;segment&nbsp;limitH <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;segment&nbsp;baseH <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br> としてみましたが、だめでした。 <br> Bochsがエラーを出すときセグメントは↓となっています。 <br> 00000195256i[CPU&nbsp;&nbsp;]&nbsp;|&nbsp;&nbsp;DS:07c0(&nbsp;0000|&nbsp;0|&nbsp;&nbsp;0)&nbsp;00007c00&nbsp;0000ffff&nbsp;0&nbsp;0 <br> 00000195256i[CPU&nbsp;&nbsp;]&nbsp;|&nbsp;&nbsp;ES:1000(&nbsp;0000|&nbsp;0|&nbsp;&nbsp;0)&nbsp;00010000&nbsp;0000ffff&nbsp;0&nbsp;0 <br> 00000195256i[CPU&nbsp;&nbsp;]&nbsp;|&nbsp;&nbsp;FS:0000(&nbsp;0000|&nbsp;0|&nbsp;&nbsp;0)&nbsp;00000000&nbsp;0000ffff&nbsp;0&nbsp;0 <br> 00000195256i[CPU&nbsp;&nbsp;]&nbsp;|&nbsp;&nbsp;GS:0000(&nbsp;0000|&nbsp;0|&nbsp;&nbsp;0)&nbsp;00000000&nbsp;0000ffff&nbsp;0&nbsp;0 <br> 00000195256i[CPU&nbsp;&nbsp;]&nbsp;|&nbsp;&nbsp;SS:07c0(&nbsp;0000|&nbsp;0|&nbsp;&nbsp;0)&nbsp;00007c00&nbsp;0000ffff&nbsp;0&nbsp;0 <br> 00000195256i[CPU&nbsp;&nbsp;]&nbsp;|&nbsp;&nbsp;CS:1000(&nbsp;0000|&nbsp;0|&nbsp;&nbsp;0)&nbsp;00010000&nbsp;0000ffff&nbsp;0&nbsp;0 <br>  <>
ひげぽん<>sage<>02/07/14 00:06<> <a href="../test/read.cgi/tech/1024411711/755" target="_blank">&gt;&gt;755</a> <br> おっしゃるとおりコピペミスです。 <br> jmp　hang <br> があります。 <>
デフォルトの名無しさん<>sage<>02/07/14 00:08<> ひげぽんまだ寝るなよ。あとで、アドバイスすっから。 <>
747&753<>sage<>02/07/14 00:10<> <a href="../test/read.cgi/tech/1024411711/754" target="_blank">&gt;&gt;754</a> <br> それが設定した後なんです。 <br> それと753に書いたの間違えました。 <br> dw set_cs_desc1+1000h <br> は+10000hではないでしょうか？ <>
ひげぽん<>sage<>02/07/14 00:11<> <a href="../test/read.cgi/tech/1024411711/758" target="_blank">&gt;&gt;758</a> <br> ありがとうございます。 <br> お待ちしております。 <br> よろしくです。 <>
デフォルトの名無しさん<>sage<>02/07/14 00:17<> <a href="../test/read.cgi/tech/1024411711/759" target="_blank">&gt;&gt;759</a> <br> そうですか、じゃあ関係ないかもです。役に立てんでごめんです。 <br> あと、 10000h は dw に入らないんじゃない？ <br>  <br>  <br> ひげぽんは <a href="../test/read.cgi/tech/1024411711/750" target="_blank">&gt;&gt;750</a> からのコードどこに置いた？ 1000h？ <br> あと、エラーのときの IP も書いて欲しい。それがそのコードどこにあたるのかとかも <br> それから <br> bochsout.txt の <br> 00010420000i[CPU  ] protected mode <br> 00010420000i[CPU  ] CS.d_b = 32 bit <br> 00010420000i[CPU  ] SS.d_b = 32 bit <br> ↑ここの部分はどうなってた？ <>
デフォルトの名無しさん<>sage<>02/07/14 00:23<> まとめると、多分こう言うことだ。 <br> エラーのとき CSが1000hになっているってことは、 <br> コードはリニアアドレスで 10000h に置いたってことだ。 <br> だから、 <br>        dw set_cs_desc1 + 1000h <br> ここは、 <br>        dw set_cs_desc1 + 10000h <br> にしなければ行けない。(リニアアドレスを書かなければ行けないから) <br>  <br> でもそれだと dw に入らない。 <br> ↓ <br> 結論もっと低いアドレスに置くべき。 <>
デフォルトの名無しさん<>sage<>02/07/14 00:30<> おいっ！寝たのかよ！！レスしろよ。 <br>  <br> あと32ビットモードになったら bits 32 にしないとだめだよ。 <>
デフォルトの名無しさん<>sage<>02/07/14 00:34<> ちっ、寝ちまったか。 <br> ------------ <br>         bits 16 <br> L1:     jmp L1 <br>         bits 32 <br>         jmp L1 <br> ------------ <br> じゃ、起きたら、このコードをアセンブルしてそれをdumpで見て <br> それが何を意味するのかよーく考えろよ。 <br> じゃな。 <br>  <>
ひげぽん<>sage<>02/07/14 00:38<> <a href="../test/read.cgi/tech/1024411711/761" target="_blank">&gt;&gt;761</a> <br> &gt;ひげぽんは <a href="../test/read.cgi/tech/1024411711/750" target="_blank">&gt;&gt;750</a> からのコードどこに置いた？ 1000h？ <br> 1000hです。 <br> &gt;696のreadのところで読み込んでます。 <br>  <br> &gt;あと、エラーのときの IP も書いて欲しい。それがそのコードどこにあたるのかとかも <br> 00000195256i[CPU&nbsp;&nbsp;]&nbsp;|&nbsp;EIP=0000001a&nbsp;(00000015) <br> となっています。 <br>  <br> bochsout.txtは↓となってしました。 <br> 00000195256i[SYS&nbsp;&nbsp;]&nbsp;Last&nbsp;time&nbsp;is&nbsp;1026574623 <br> 00000195256i[CPU&nbsp;&nbsp;]&nbsp;protected&nbsp;mode <br> 00000195256i[CPU&nbsp;&nbsp;]&nbsp;CS.d_b&nbsp;=&nbsp;16&nbsp;bit <br> 00000195256i[CPU&nbsp;&nbsp;]&nbsp;SS.d_b&nbsp;=&nbsp;16&nbsp;bit <br>  <>
ひげぽん<>sage<>02/07/14 00:42<> <a href="../test/read.cgi/tech/1024411711/762" target="_blank">&gt;&gt;762</a> <br> dw set_cs_desc1 + 10000h <br> としてみて、アセンブルすると <br> 通ってしまうのですが、Okなのでしょうか。 <>
ひげぽん<>sage<>02/07/14 00:43<> &gt;763 764 <br> 入れ違いです。すいません。 <br>  <>
747<>sage<>02/07/14 00:43<> 調べるてみると <br> label: <br>    jmp label <br> はだめで <br>    jmp label <br> label: <br> はエラーなしでした。 <br> <a href="../test/read.cgi/tech/1024411711/765" target="_blank">&gt;&gt;765</a> <br> もし1000hなら <br> dd gdt0+1000h*16 <br> の*16hがいらないのではないでしょうか？ <>
デフォルトの名無しさん<>sage<>02/07/14 00:44<> ひげぽん(･∀･)ｵｷﾃﾀ!! <br>  <br> <a href="../test/read.cgi/tech/1024411711/765" target="_blank">&gt;&gt;765</a> それなら、<a href="../test/read.cgi/tech/1024411711/762" target="_blank">&gt;&gt;762</a> で決まり。 <br> <a href="../test/read.cgi/tech/1024411711/766" target="_blank">&gt;&gt;766</a> OKじゃねえよ。できたバイナリ見ろよ。 <>
デフォルトの名無しさん<><>02/07/14 00:46<> <a href="../test/read.cgi/tech/1024411711/768" target="_blank">&gt;&gt;768</a> <br> CPUが32bit モードになっているのにbits 32を書いてないので、 <br> コードが32bit用に成っていないのでは？ <a href="../test/read.cgi/tech/1024411711/764" target="_blank">&gt;&gt;764</a> は試してみた？ <>
デフォルトの名無しさん<><>02/07/14 00:48<> <a href="../test/read.cgi/tech/1024411711/765" target="_blank">&gt;&gt;765</a> <br> CS が 1000h になっているのに実行イメージが1000hに置かれてるって <br> なんか勘違いしてませんか？ <>
ひげぽん<>sage<>02/07/14 00:55<> <a href="../test/read.cgi/tech/1024411711/770" target="_blank">&gt;&gt;770</a> <br> [bits 32] <br> flush_q1: <br> としてみました。 <br>  <br> <a href="../test/read.cgi/tech/1024411711/771" target="_blank">&gt;&gt;771</a> <br> read: <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ax,&nbsp;1000h <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;es,&nbsp;ax&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;es:bx&nbsp;is <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;bx,&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;data&nbsp;buffer <br>  <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ah,&nbsp;02h&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;read&nbsp;sectors&nbsp;into&nbsp;memory <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;al,&nbsp;5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;number&nbsp;of&nbsp;sectors&nbsp;to&nbsp;read <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ch,&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;low&nbsp;eight&nbsp;bits&nbsp;of&nbsp;cylinder&nbsp;number <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;cl,&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;sector&nbsp;number <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;dh,&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;head&nbsp;number <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;dl,&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;drive&nbsp;number <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;13h&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;read! <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jc&nbsp;&nbsp;read <br>  <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jmp&nbsp;1000h:0000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;jump&nbsp;to&nbsp;the&nbsp;secondboot <br> とすると、1000hに読み込まれた実行イメージにジャンプするという <br> 認識だったのですが、もしかして出発点から間違ってます？ <>
ひげぽん<>sage<>02/07/14 00:58<> <a href="../test/read.cgi/tech/1024411711/769" target="_blank">&gt;&gt;769</a>さん。 <br> 上記<a href="../test/read.cgi/tech/1024411711/772" target="_blank">&gt;&gt;772</a> <br> の1000hの部分を0100hにしてかつ、 <br> [bits&nbsp;32] <br> flush_q1: <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db&nbsp;0eah <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dw&nbsp;set_cs_desc1&nbsp;+&nbsp;100h&nbsp;*&nbsp;16 <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dw&nbsp;08h <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jmp&nbsp;&nbsp;hang <br> および <br> gdtr: <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dw&nbsp;gdt_end&nbsp;-&nbsp;gdt0&nbsp;-&nbsp;1&nbsp;&nbsp;&nbsp;;&nbsp;gdt&nbsp;limit <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dd&nbsp;gdt0&nbsp;+&nbsp;100h&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;start&nbsp;adderess <br> としてみましたがだめでした。 <>
デフォルトの名無しさん<>sage<>02/07/14 00:59<> <a href="../test/read.cgi/tech/1024411711/772" target="_blank">&gt;&gt;772</a> <br> それなら、リニアアドレスでは10000hになるのは分かる？ <br> そして、flush_q1 の後のジャンプの場所指定で書かなければいけないのはリニアアドレス。 <br> (なぜならもうプロテクトモードなんだし、08 のコードセグメントのベースが0に成っているから) <>
デフォルトの名無しさん<>sage<>02/07/14 01:01<> <a href="../test/read.cgi/tech/1024411711/773" target="_blank">&gt;&gt;773</a> <br> 違う。 gdtr の所の start addressはリニアアドレス。 <br> あと、「上手くいった/だめだった」の二元論ではなくどこでエラーが <br> 起きたのかが重要。ダメなときはどこで止まったのか調べないと。 <>
ひげぽん<>sage<>02/07/14 01:02<> <a href="../test/read.cgi/tech/1024411711/774" target="_blank">&gt;&gt;774</a> <br> なるほど良く分かりました。 <br> ということは、もともとのCS * 16するってことですよね。 <br> でもうまくいかないです。 <br> だいぶ前進したとは思うのですが、 <br>  <>
ひげぽん<>sage<>02/07/14 01:07<> <a href="../test/read.cgi/tech/1024411711/776" target="_blank">&gt;&gt;776</a>さんのおっしゃる通りなのでちょっとまとめます。 <br> 現在の状況は <br> 0100hに読み込まれたイメージの中でプロテクトモードに移行しようとしているが <br> 以下のようなエラーが出てしまう。 <br> 00000195256i[CPU&nbsp;&nbsp;]&nbsp;protected&nbsp;mode <br> 00000195256i[CPU&nbsp;&nbsp;]&nbsp;CS.d_b&nbsp;=&nbsp;16&nbsp;bit <br> 00000195256i[CPU&nbsp;&nbsp;]&nbsp;SS.d_b&nbsp;=&nbsp;16&nbsp;bit <br> 00000195256i[CPU&nbsp;&nbsp;]&nbsp;|&nbsp;EAX=60000011&nbsp;&nbsp;EBX=00000000&nbsp;&nbsp;ECX=00010002&nbsp;&nbsp;EDX=00000000 <br> 00000195256i[CPU&nbsp;&nbsp;]&nbsp;|&nbsp;ESP=0000fffe&nbsp;&nbsp;EBP=00000000&nbsp;&nbsp;ESI=00000025&nbsp;&nbsp;EDI=0000ffe4 <br> 00000195256i[CPU&nbsp;&nbsp;]&nbsp;|&nbsp;IOPL=0&nbsp;NV&nbsp;UP&nbsp;DI&nbsp;PL&nbsp;NZ&nbsp;NA&nbsp;PE&nbsp;NC <br> 00000195256i[CPU&nbsp;&nbsp;]&nbsp;|&nbsp;SEG&nbsp;selector&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;base&nbsp;&nbsp;&nbsp;&nbsp;limit&nbsp;G&nbsp;D <br> 00000195256i[CPU&nbsp;&nbsp;]&nbsp;|&nbsp;SEG&nbsp;sltr(index|ti|rpl)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;base&nbsp;&nbsp;&nbsp;&nbsp;limit&nbsp;G&nbsp;D <br> 00000195256i[CPU&nbsp;&nbsp;]&nbsp;|&nbsp;&nbsp;DS:07c0(&nbsp;0000|&nbsp;0|&nbsp;&nbsp;0)&nbsp;00007c00&nbsp;0000ffff&nbsp;0&nbsp;0 <br> 00000195256i[CPU&nbsp;&nbsp;]&nbsp;|&nbsp;&nbsp;ES:0100(&nbsp;0000|&nbsp;0|&nbsp;&nbsp;0)&nbsp;00001000&nbsp;0000ffff&nbsp;0&nbsp;0 <br> 00000195256i[CPU&nbsp;&nbsp;]&nbsp;|&nbsp;&nbsp;FS:0000(&nbsp;0000|&nbsp;0|&nbsp;&nbsp;0)&nbsp;00000000&nbsp;0000ffff&nbsp;0&nbsp;0 <br> 00000195256i[CPU&nbsp;&nbsp;]&nbsp;|&nbsp;&nbsp;GS:0000(&nbsp;0000|&nbsp;0|&nbsp;&nbsp;0)&nbsp;00000000&nbsp;0000ffff&nbsp;0&nbsp;0 <br> 00000195256i[CPU&nbsp;&nbsp;]&nbsp;|&nbsp;&nbsp;SS:07c0(&nbsp;0000|&nbsp;0|&nbsp;&nbsp;0)&nbsp;00007c00&nbsp;0000ffff&nbsp;0&nbsp;0 <br> 00000195256i[CPU&nbsp;&nbsp;]&nbsp;|&nbsp;&nbsp;CS:0100(&nbsp;0000|&nbsp;0|&nbsp;&nbsp;0)&nbsp;00001000&nbsp;0000ffff&nbsp;0&nbsp;0 <br> 00000195256i[CPU&nbsp;&nbsp;]&nbsp;|&nbsp;EIP=0000003b&nbsp;(0000003b) <br>  <>
ひげぽん<>sage<>02/07/14 01:09<> 移行時に実行していること <br> gdtr: <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dw&nbsp;gdt_end&nbsp;-&nbsp;gdt0&nbsp;-&nbsp;1&nbsp;&nbsp;&nbsp;;&nbsp;gdt&nbsp;limit <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dd&nbsp;gdt0&nbsp;+&nbsp;100h&nbsp;*&nbsp;16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;start&nbsp;adderess <br> ---- <br> [bits&nbsp;32] <br> flush_q1: <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db&nbsp;0eah <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dw&nbsp;set_cs_desc1&nbsp;+&nbsp;100h&nbsp;*&nbsp;16 <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dw&nbsp;08h <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jmp&nbsp;&nbsp;hang <br>  <br> うーんどこが悪いかが分からない。 <br> もう少しねばってみます。 <>
デフォルトの名無しさん<>sage<>02/07/14 01:12<> flush_q1 では実はまだ32bit モードじゃないらしいんだよ。 <br> おれも詳しくは分からないけどプロテクトモードだけど16bit モードってのがあるらしい。 <br> (bochs のソースを見てそう思った) <br> 本当に32bit モードに成るのは CS が 08 に成ってから。 <br> だから、それだとbits32を置く場所がちょっと違う。 <br>  <>
ひげぽん<>sage<>02/07/14 01:15<> <a href="../test/read.cgi/tech/1024411711/779" target="_blank">&gt;&gt;779</a> <br> ありがとうございます。 <br> bits 32の場所を変えてみましたが、だめでした。 <br> <a href="../test/read.cgi/tech/1024411711/704" target="_blank">&gt;&gt;704</a>(プロテクトモード移行成功)も同じ場所だったので <br> 今回のエラーの直接の原因ではないかもしれません。 <>
デフォルトの名無しさん<>sage<>02/07/14 01:19<> <a href="../test/read.cgi/tech/1024411711/780" target="_blank">&gt;&gt;780</a> 了解。 <br> じゃあ、エラーが起きてる IP=0x003b のところはソースでいうどこにあたる？ <>
ひげぽん<>sage<>02/07/14 01:25<> <a href="../test/read.cgi/tech/1024411711/781" target="_blank">&gt;&gt;781</a>さん <br> IPってオフセットアドレスですよね？ <br> ソースのどの部分が該当するかを調べるには <br> どうしたらよいのでしょうか <br>  <br> 質問ばかりで申し訳ないです。 <br>  <>
デフォルトの名無しさん<>sage<>02/07/14 01:26<> <a href="../test/read.cgi/tech/1024411711/782" target="_blank">&gt;&gt;782</a> <br> デバッガある？ <>
ひげぽん<>sage<>02/07/14 01:35<> <a href="../test/read.cgi/tech/1024411711/783" target="_blank">&gt;&gt;783</a> <br> DJGPPにgdb.exeがついてきていましたが <br> これでよいですか？ <br> 使ったことがないのですが、これで出来るなら <br> 明日にでも勉強いたします。 <br>  <>
デフォルトの名無しさん<>sage<>02/07/14 01:38<> gdbで、いいかどうかはちょっと分からない。 <br> ベクターとかにありそうなMS-DOS用のcomファイルを調べられるの使うのが良い。 <br> あとは、nasm の -l オプションかな。 <>
ひげぽん<>sage<>02/07/14 01:41<> 遅くまでありがとうございます。 <br> 実行しながらデバッグするのでしょうか？ <br> それだとBochsの機能でなにかあるのかなあ。 <>
デフォルトの名無しさん<>sage<>02/07/14 01:45<> もしかしたら bochs にそういう機能があるかもしれないけど俺は分からん。 <br> つうか、今はどこでエラーが起きたのか分かれば良いんだから、 <br> 実行しながらデバグなんてしなくて良いよ。  <br> -l は試した？ 結局 3b ってどこなのさっ！！ <br>  <>
747<>sage<>02/07/14 01:47<> なにも変更してないのに突然エラーなくなりました。わけわからん。 <br> 相談に乗っていただいた方どうもありがとうございました。 <>
デフォルトの名無しさん<>sage<>02/07/14 01:49<> <a href="../test/read.cgi/tech/1024411711/747" target="_blank">&gt;&gt;747</a> <br> おめでと。役に立てなくてゴメン。 <br> またなんかあったら聞いてね。今度こそ役立つアドバイスするｶﾗ <>
747<>sage<>02/07/14 02:50<> またエラーになった．．．もう寝よう <>
ひげぽん<><>02/07/14 11:56<> おはようございます。 <br> nasm -l でリストを出力しました。 <br> &nbsp;&nbsp;&nbsp;&nbsp;62&nbsp;00000031&nbsp;AC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;2&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lodsb <br> &nbsp;&nbsp;&nbsp;&nbsp;63&nbsp;00000032&nbsp;3C00&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;2&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cmp&nbsp;al,&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp; <br> &nbsp;&nbsp;&nbsp;&nbsp;64&nbsp;00000034&nbsp;7409&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;2&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;je&nbsp;&nbsp;%%end&nbsp;&nbsp;&nbsp;&nbsp; <br> &nbsp;&nbsp;&nbsp;&nbsp;65&nbsp;00000036&nbsp;B40E&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;2&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;ah,&nbsp;0Eh&nbsp;&nbsp;&nbsp;&nbsp; <br> &nbsp;&nbsp;&nbsp;&nbsp;66&nbsp;00000038&nbsp;B700&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;2&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;bh,&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp; <br> &nbsp;&nbsp;&nbsp;&nbsp;67&nbsp;0000003A&nbsp;CD10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;2&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;10h&nbsp;&nbsp;&nbsp;&nbsp; <br> &nbsp;&nbsp;&nbsp;&nbsp;68&nbsp;0000003C&nbsp;E9F2FF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;2&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jmp&nbsp;%%hige&nbsp;&nbsp;&nbsp;&nbsp; <br> &nbsp;&nbsp;&nbsp;&nbsp;69&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;2&gt;&nbsp;%%end:&nbsp;&nbsp;&nbsp;&nbsp; <br> &nbsp;&nbsp;&nbsp;&nbsp;70&nbsp;0000003F&nbsp;58&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;2&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pop&nbsp;ax&nbsp;&nbsp;&nbsp;&nbsp; <br> &nbsp;&nbsp;&nbsp;&nbsp;71&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;1&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br> &nbsp;&nbsp;&nbsp;&nbsp;72&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;1&gt;&nbsp;reset:&nbsp;&nbsp;&nbsp;&nbsp; <br>  <br> 3bはどこにあるのでしょうか。 <br>  <>
ひげぽん<>sage<>02/07/14 12:46<> いろいろ調べてみると <br> プロテクトモード移行直後の <br> jmp flush_q1以降で死んでいるようです。 <br> jmp hangとすると3rd exceptionは発生しませんでした。 <>
デフォルトの名無しさん<>sage<>02/07/14 13:13<> 今でも死ぬときのIPは 3bなの？ <>
ひげぽん<>sage<>02/07/14 13:16<> ええ。 <br> 3bです。こんな感じです。 <br> 00000195256i[CPU  ] | EIP=0000003b (0000003b) <br>  <>
デフォルトの名無しさん<>sage<>02/07/14 13:18<> <a href="../test/read.cgi/tech/1024411711/792" target="_blank">&gt;&gt;792</a> <br> 現在のコードはどうなってるの？ <>
ひげぽん<>sage<>02/07/14 13:19<> [bits&nbsp;16] <br> RealToProtect: <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lgdt&nbsp;[gdtr]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;load&nbsp;gdtr <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cli&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;disable&nbsp;interrupt <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;eax,&nbsp;cr0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;real <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;or&nbsp;&nbsp;&nbsp;eax,&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;to <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;cr0,&nbsp;eax&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;protect <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jmp&nbsp;&nbsp;flush_q1 <br>  <br> ;------------------------------------------------------------------------------- <br> ;&nbsp;GDT&nbsp;definition <br> ;------------------------------------------------------------------------------- <br> gdtr: <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dw&nbsp;gdt_end&nbsp;-&nbsp;gdt0&nbsp;-&nbsp;1&nbsp;&nbsp;&nbsp;;&nbsp;gdt&nbsp;limit <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dd&nbsp;gdt0&nbsp;+&nbsp;100h&nbsp;*&nbsp;16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;start&nbsp;adderess <br>  <br> gdt0:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;segment&nbsp;00 <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dw&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;segment&nbsp;limitL <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dw&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;segment&nbsp;baseL <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;segment&nbsp;baseM <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;segment&nbsp;type <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;segment&nbsp;limitH <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;segment&nbsp;baseH <>
ひげぽん<>sage<>02/07/14 13:20<> gdt08:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;segment&nbsp;08(code&nbsp;segment) <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dw&nbsp;0xffff&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;segment&nbsp;limitL <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dw&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;segment&nbsp;baseL <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;segment&nbsp;baseM <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db&nbsp;0x9a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Type&nbsp;Code <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db&nbsp;0xcf&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;segment&nbsp;limitH <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;segment&nbsp;baseH <br>  <br> gdt10:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;segment&nbsp;10(data&nbsp;segment) <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dw&nbsp;0xffff&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;segment&nbsp;limitL <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dw&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;segment&nbsp;baseL <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;segment&nbsp;baseM <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db&nbsp;0x92&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Type&nbsp;Data <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db&nbsp;0xcf&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;segment&nbsp;limitH <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;segment&nbsp;baseH <br>  <>
ひげぽん<>sage<>02/07/14 13:20<> gdt18:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;segment&nbsp;18(stack&nbsp;segment) <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dw&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;segment&nbsp;limitL <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dw&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;segment&nbsp;baseL <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;segment&nbsp;baseM <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db&nbsp;0x96&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Type&nbsp;Stack <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db&nbsp;0xcf&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;segment&nbsp;limitH <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;segment&nbsp;baseH <br>  <br> gdt_end:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;end&nbsp;of&nbsp;gdt <br>  <>
ひげぽん<>sage<>02/07/14 13:20<> [bits&nbsp;32] <br> flush_q1: <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db&nbsp;0eah <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dw&nbsp;set_cs_desc1&nbsp;+&nbsp;100h&nbsp;*&nbsp;16 <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dw&nbsp;08h <br>  <br> set_cs_desc1: <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;ax,&nbsp;10h <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;ds,&nbsp;ax <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;es,&nbsp;ax <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;ax,&nbsp;18h <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;ss,&nbsp;ax <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;sp,&nbsp;0x100 <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jmp&nbsp;&nbsp;hang <br>  <br> hang: <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jmp&nbsp;hang <br> ;&nbsp;&nbsp;;&nbsp;&nbsp;print: <br> ;&nbsp;&nbsp;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;[edi],&nbsp;al <br> ;&nbsp;&nbsp;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;add&nbsp;edi&nbsp;&nbsp;,&nbsp;2 <br> ;&nbsp;&nbsp;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ret <br>  <>
ひげぽん<>sage<>02/07/14 13:21<> <a href="../test/read.cgi/tech/1024411711/795" target="_blank">&gt;&gt;795</a> <br> 板を汚して申し訳ありません。 <br> 現状は上記の通りです。 <>
デフォルトの名無しさん<>sage<>02/07/14 13:32<> もしかして<a href="../test/read.cgi/tech/1024411711/791" target="_blank">&gt;&gt;791</a>は1stブートのやつじゃ、、 <>
ひげぽん<>sage<>02/07/14 13:35<> <a href="../test/read.cgi/tech/1024411711/801" target="_blank">&gt;&gt;801</a>さん。 <br> ええその通りです。 <br> BIOS経由で文字列出力する部分です。 <br> nasmでアセンブルするときはひとつにまとめるので <br> リストもfirst boot, second bootもあわせたものになっています。 <br>  <br>  <>
デフォルトの名無しさん<>sage<>02/07/14 13:37<> <a href="../test/read.cgi/tech/1024411711/802" target="_blank">&gt;&gt;802</a> <br> Σ（ﾟдﾟlll）ｶﾞｰﾝ もっと考えれ。 <br> second boot の先頭を 0 として 3b がどこかを調べなきゃ意味ないだろ。 <>
795<>sage<>02/07/14 13:37<> <a href="../test/read.cgi/tech/1024411711/800" target="_blank">&gt;&gt;800</a> <br> うーん、リスティングファイルの方がよかったかも。 <br> で。 <br> <a href="../test/read.cgi/tech/1024411711/695" target="_blank">&gt;&gt;695</a>とか見ると、リニアアドレス0x0010000にそのコードをロードしてるみたいだけど。 <br>  <br> &gt; gdtr: <br> &gt;         dw gdt_end - gdt0 - 1   ; gdt limit <br> &gt;         dd gdt0 + 100h * 16     ; start adderess <br>  <br> dd 0010000h+gdt0では？ <br>  <br> &gt; flush_q1: <br> &gt;         db 0eah <br> &gt;         dw set_cs_desc1 + 100h * 16 <br> &gt;         dw 08h <br>  <br> こっちも。 <br>  <br> あと、どっかに垢取ってそっちにコード全体を上げた方がいいかも。 <br>  <>
ひげぽん<>sage<>02/07/14 13:46<> <a href="../test/read.cgi/tech/1024411711/803" target="_blank">&gt;&gt;803</a> <br> <a href="../test/read.cgi/tech/1024411711/804" target="_blank">&gt;&gt;804</a> <br> もっと考えます。 <br> いま、とりあえず垢をとっています。 <br>  <>
デフォルトの名無しさん<>sage<>02/07/14 13:47<> もしかしてひげぽんは <br> 1st-boot と 2nd-boot くっつけてアセンブルしない？ <br> 別々にアセンブルしてからくっつけた方が良いかも <>
795<>sage<>02/07/14 13:54<> あと、ベースアドレスが00010000h、リミットが0000FFFFhで16ビットのセレクタを用意して、 <br> そっちで作業した方が楽だと思われ。 <br> ベースアドレスが00000000hのセレクタに切り替えると、オフセット計算が面倒なことになる。 <>
デフォルトの名無しさん<>sage<>02/07/14 14:04<> <a href="../test/read.cgi/tech/1024411711/806" target="_blank">&gt;&gt;806</a>の詳しい解説 <br> 1st-boot は、 2nd-boot の先頭が 1000hにくるように <br> ディスクをロードする。 <br> だから、2nd-boot の先頭から数えた offset に 1000h を加算すれば <br> それがちょうど リニアアドレスになる。 <br> しかし、ひげぽんは1st-bootと2nd-boot をくっつけて <br> アセンブルしているので、offsetがずれてしまう。 <br> nasm -l の出力で <br>  dd gdt0 + 100h * 16     ; start adderess <br>  dw set_cs_desc1 + 100h * 16 <br> この2行がどうアセブルされているか見てみ。 <br> 前者が [1B100000] 後者が[4010]なら正しいぞ。 <br> でもそうなっていないはず。 <br> で、今度はばらばらにアセンブルしてみな。 <br> すると上のようになるはずだ。それを確認したら <br> copy とか dd とかつかって二つをくっつける。  <br> これで上手く行くはず。 <br>  <>
795<>sage<>02/07/14 14:12<> <a href="../test/read.cgi/tech/1024411711/808" target="_blank">&gt;&gt;808</a> <br> <a href="../test/read.cgi/tech/1024411711/696" target="_blank">&gt;&gt;696</a>でes:bxが1000:0000だからリニアアドレスは00010000hだって。 <>
デフォルトの名無しさん<>sage<>02/07/14 14:13<> <a href="../test/read.cgi/tech/1024411711/809" target="_blank">&gt;&gt;809</a> <br> <a href="../test/read.cgi/tech/1024411711/777" target="_blank">&gt;&gt;777</a>見れ <>
ひげぽん<>sage<>02/07/14 14:14<> <a href="../test/read.cgi/tech/1024411711/806" target="_blank">&gt;&gt;806</a> <a href="../test/read.cgi/tech/1024411711/808" target="_blank">&gt;&gt;808</a> <br> まとめてアセンブルしてました。 <br> (1)まとめてアセンブルした場合 <br> 　　　   133 00000217 [1B120000]          &lt;1&gt;         dd gdt0 + 100h * 16     ; start adderess <br> 　　　   172 0000023C [4012]              &lt;1&gt;         dw set_cs_desc1 + 100h * 16 <br> (2)secondboot.asm単体アセンブルの場合 <br>          22 00000017 [1B100000]                      dd gdt0 + 100h * 16     ; start adderess <br>          61 0000003C [4010]                          dw set_cs_desc1 + 100h * 16 <br> <a href="../test/read.cgi/tech/1024411711/808" target="_blank">&gt;&gt;808</a>さんのおっしゃる通りになってました。 <br> 今から別々にアセンブルを試してみます。 <>
809<>sage<>02/07/14 14:35<> <a href="../test/read.cgi/tech/1024411711/810" target="_blank">&gt;&gt;810</a> <br> 　∧||∧  <br> （　 ⌒ ヽ <br> 　∪　　ﾉ　<a href="../test/read.cgi/tech/1024411711/773" target="_blank">&gt;&gt;773</a>で変更してたのね… <br> 　　∪∪  <br>  <>
デフォルトの名無しさん<>sage<>02/07/14 14:37<> ﾄﾞﾏｲ。オフセットをWORDに入れなきゃだから。 <br> <a href="../test/read.cgi/tech/1024411711/807" target="_blank">&gt;&gt;807</a>みたいな手もあるけど、、、、。 <>
ひげぽん<>sage<>02/07/14 14:39<> ひげぽんです。 <br> 皆さんありがとうございます。 <br> 別々アセンブルでも同じIPでエラーが起きてしまいました。 <br>  <br> 今から外出しなければいけなくなってしまったので <br> 戻り次第アカウントを取得してソースを簡単に公開できるようにします。 <br>  <br> ところで <br> copy firstboot.bin + secondboot.bin higeboot.bin <br> をddコマンドでやるにはどうやったら良いんでしょうか？ <br> if=で複数ファイルを指定してみたらうまくいかなかった。 <br>  <br>  <br>  <>
デフォルトの名無しさん<>sage<>02/07/14 14:40<> <a href="../test/read.cgi/tech/1024411711/814" target="_blank">&gt;&gt;814</a> <br> そっか。自信あったんだけどダメだったか。 <br> ソース公開を待つことにするよ。 <>
デフォルトの名無しさん<>sage<>02/07/14 14:53<> あれ？やっぱできるじゃん。 <br> 俺、ひげぽんの <a href="../test/read.cgi/tech/1024411711/796" target="_blank">&gt;&gt;796</a> - 799 と自作 1st-boot で、上手く行ったよ。 <br> もしかして 1st-boot で、 ds を設定していないとか言うオチですか？ <>
ひげぽん<><>02/07/14 17:22<> <a href="../test/read.cgi/tech/1024411711/815" target="_blank">&gt;&gt;815</a>  <br> <a href="../test/read.cgi/tech/1024411711/816" target="_blank">&gt;&gt;816</a>さん  <br> ありがとうございます。  <br> 現状の動かないソースを  <br> http://oshigepon.tripod.co.jp/  <br> におきましたので、ご参照いただければ幸いです。  <br>  <br> 3bはこちら↓でした。 <br>     59                                  flush_q1: <br>     60 0000003B EA                              db 0eah <br>     61 0000003C [4010]                          dw set_cs_desc1 + 100h * 16 <br>  <>
ひげぽん<>sage<>02/07/14 18:22<> やっと、ソースをほぼ自動的にhtmlとしてアップする仕組みが出来た。 <br> 今日は、OS製作以外でちょっとだけプログラムした･･･ <br> 最近は、ftpの出来ないフリースペースが多いですね。 <br> アップロードをスクリプトに出来なくて面倒なので <br> ftpのokなtripodにしました。 <br>  <>
デフォルトの名無しさん<>sage<>02/07/14 18:23<> <a href="../test/read.cgi/tech/1024411711/818" target="_blank">&gt;&gt;818</a> <br> もちろんアセンブラで書いたんですよね？ <>
ひげぽん<>sage<>02/07/14 18:30<> <a href="../test/read.cgi/tech/1024411711/818" target="_blank">&gt;&gt;818</a> <br> 私の腕前では無理です(笑) <br>  <>
デフォルトの名無しさん<>sage<>02/07/14 18:46<> <a href="../test/read.cgi/tech/1024411711/818" target="_blank">&gt;&gt;818</a> <br>  <br> &gt; 10 00000000 0F0116[1500]                    lgdt [gdtr]             ; load gdtr <br>  <br> この時のDSレジスタの値は？ <br> firstbootで設定された07C0hを引きずってるように見えるが。 <br>  <>
ひげぽん<>sage<>02/07/14 18:57<> <a href="../test/read.cgi/tech/1024411711/821" target="_blank">&gt;&gt;821</a> <br> 07C0hを引きずっています。 <br> load gdtrした後に <br> flush→CSセットとなるのかな。 <br> 00000195256i[CPU&nbsp;&nbsp;]&nbsp;|&nbsp;&nbsp;DS:07c0(&nbsp;0000|&nbsp;0|&nbsp;&nbsp;0)&nbsp;00007c00&nbsp;0000ffff&nbsp;0&nbsp;0 <br> 00000195256i[CPU&nbsp;&nbsp;]&nbsp;|&nbsp;&nbsp;ES:0100(&nbsp;0000|&nbsp;0|&nbsp;&nbsp;0)&nbsp;00001000&nbsp;0000ffff&nbsp;0&nbsp;0 <br> 00000195256i[CPU&nbsp;&nbsp;]&nbsp;|&nbsp;&nbsp;FS:0000(&nbsp;0000|&nbsp;0|&nbsp;&nbsp;0)&nbsp;00000000&nbsp;0000ffff&nbsp;0&nbsp;0 <br> 00000195256i[CPU&nbsp;&nbsp;]&nbsp;|&nbsp;&nbsp;GS:0000(&nbsp;0000|&nbsp;0|&nbsp;&nbsp;0)&nbsp;00000000&nbsp;0000ffff&nbsp;0&nbsp;0 <br> 00000195256i[CPU&nbsp;&nbsp;]&nbsp;|&nbsp;&nbsp;SS:07c0(&nbsp;0000|&nbsp;0|&nbsp;&nbsp;0)&nbsp;00007c00&nbsp;0000ffff&nbsp;0&nbsp;0 <br> 00000195256i[CPU&nbsp;&nbsp;]&nbsp;|&nbsp;&nbsp;CS:0100(&nbsp;0000|&nbsp;0|&nbsp;&nbsp;0)&nbsp;00001000&nbsp;0000ffff&nbsp;0&nbsp;0 <br> 00000195256i[CPU&nbsp;&nbsp;]&nbsp;|&nbsp;EIP=0000003b&nbsp;(0000003b) <>
821<>sage<>02/07/14 19:04<> じゃ、それが原因。 <br>  <br> GDTRに不正な値をロード。 <br> far jump時にCSレジスタに不正な位置を指したセレクタをロードしようとする。 <br> 一般保護例外発生。 <br> 例外ハンドラに処理を渡そうとする。 <br> IDTRがセットされてないので失敗。 <br> ダブルフォールトの例外ハンドラに処理を渡そうとする。 <br> 当然失敗。 <br> トリプルフォールトであぼーん。 <br>  <br> こんなシナリオかと。 <br>  <br> lgdt cs:[gdtr]としてCSレジスタ相対にするか、DSレジスタをCSにそろえるか。 <>
ひげぽん<>sage<>02/07/14 19:06<> <a href="../test/read.cgi/tech/1024411711/814" target="_blank">&gt;&gt;814</a> <br> 自己レスです。 <br> &gt;copy firstboot.bin + secondboot.bin higeboot.bin <br> &gt;をddコマンドでやるにはどうやったら良いんでしょうか？ <br> &gt;if=で複数ファイルを指定してみたらうまくいかなかった。 <br> catでうまくいきました。 <br> catってバイナリファイルも連結できるんですね・・・ <br>  <br>  <>
ひげぽん<>sage<>02/07/14 19:18<> <a href="../test/read.cgi/tech/1024411711/821" target="_blank">&gt;&gt;821</a><a href="../test/read.cgi/tech/1024411711/823" target="_blank">&gt;&gt;823</a>さん <br> &gt;GDTRに不正な値をロード。 <br> gdtrにロードするアドレスが不正なのか <br> それともディスクリプタテーブルにセットされている <br> セグメント設計が不正なのでしょうか。 <br>  <br> &gt;lgdt cs:[gdtr]としてCSレジスタ相対にするか、DSレジスタをCSにそろえるか <br> ldgt cs:[gdtr]はアセンブル時にエラーになってしまいました。 <br>  <br>  <>
821<>sage<>02/07/14 19:30<> <a href="../test/read.cgi/tech/1024411711/825" target="_blank">&gt;&gt;825</a> <br> GDTRにロードされる値。 <br> リスティングファイルを見ながらどんなアドレスが生成されるか考えてみよう。 <br>  <br> gdtrの指すアドレスは0100:0015。 <br> 実効アドレスは00000115h。 <br>  <br> lgdt [gdtr]でロードされるのはds:gdtr。 <br> dsレジスタは07C0hだから07C0:0015。 <br> 実効アドレスは00007C15h。 <br>  <br> &gt; ldgt cs:[gdtr]はアセンブル時にエラーになってしまいました。 <br>  <br> スマソ、cs:[gdtr]はmasmの書き方だった。 <br> nasmでは[cs:gdtr]。 <>
821<>sage<>02/07/14 19:31<> &gt; gdtrの指すアドレスは0100:0015。 <br> &gt; 実効アドレスは00000115h。 <br>  <br> 嘘書くなよ、俺。 <br> 00001015hが正解。 <>
821<>sage<>02/07/14 19:32<> つーか、実効アドレスの意味間違ってるような。 <br> 実効アドレス→リニアアドレスに訂正。 <>
ひげぽん<>sage<>02/07/14 19:37<> http://ime.nu/oshigepon.tripod.co.jp/ <br> [報告] <br> 結論から言うとnasmでは[cs:gdtr]でばっちりうまくいきました。 <br> &gt;lgdt [gdtr]でロードされるのはds:gdtr。 <br> ということは、secondbootにジャンプしたときに <br> dsをきちんとセットしていなかったのが問題だったわけですね。 <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;ax,&nbsp;cs <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;ds,&nbsp;ax <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lgdt&nbsp;[gdtr]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;load&nbsp;gdtr <br> でもうまくいきました。 <br>  <br> アドバイスを下さったたくさんの方々 <br> ありがとうございます。 <br>  <br>  <br>  <br>  <>
ひげぽん<>sage<>02/07/14 19:41<> http://ime.nu/ime.nu/oshigepon.tripod.co.jp/ <br> 今回の反省点[プロテクトモード移行時] <br> ・アセンブラファイルを分割していたことを考慮していなかった。 <br> ・リニアアドレスを設定しなければいけないところを考慮できていなかった。 <br> ・firstbootからsecondbootにジャンプしたときにdsを設定しなおさかった。 <br> ・nasm -lを知らなかった。 <br> ・bits 16,bits 32の記述をしていなかった。 <br> いろいろです。 <br>  <>
ひげぽん<>http://oshigepon.tripod.co.jp/<>02/07/14 19:52<> [次の目標] <br> インラインアセンブラを駆使しつつ、Cでソースをかいて <br> 32bitコンパイラでコンパイルする。 <br> 出来上がったバイナリを、secondbootで読み込み実行する。 <br>  <br>  <>
ひげぽん<><>02/07/14 20:01<> プロテクトモード移行に成功したソースを <br> http://oshigepon.tripod.co.jp/ <br> に置きました。 <br>  <br> プロテクモード万歳！！！ <br> 皆さんありがとうございます。 <br> 00161809000i[CPU&nbsp;&nbsp;]&nbsp;protected&nbsp;mode <br> 00161809000i[CPU&nbsp;&nbsp;]&nbsp;CS.d_b&nbsp;=&nbsp;32&nbsp;bit <br> 00161809000i[CPU&nbsp;&nbsp;]&nbsp;SS.d_b&nbsp;=&nbsp;32&nbsp;bit <br>  <br> 本当に皆さんのおかげでこのスレッドは、非常に有用な <br> スレッドになっていると思います。 <br>  <br> 大変お世話になっております、そしてこれからもよろしくお願いいたします。 <br>  <br> 私と同様に、OSを本気で作ろうと考えている人たち <br> 一緒にがんばりましょう。 <br>  <>
デフォルトの名無しさん<>sage<>02/07/14 20:07<> ひげぽんまだいる？もう少し補足がある。 <>
ひげぽん<>sage<>02/07/14 20:08<> <a href="../test/read.cgi/tech/1024411711/833" target="_blank">&gt;&gt;833</a> <br> います。 <>
833<>sage<>02/07/14 20:19<> ごみん。間違い。<a href="../test/read.cgi/tech/1024411711/833" target="_blank">&gt;&gt;833</a> は忘れて。 <>
ひげぽん<>sage<>02/07/14 20:28<> <a href="../test/read.cgi/tech/1024411711/835" target="_blank">&gt;&gt;835</a> <br> 了解です。 <br>  <br> そろそろ仮称でも良いからPJ名(OS名)を決めないと・・・ <br> 取り返しがつかなくなる気がする。 <br>  <br> higeboot.asmって結構恥ずかしい名前だ。 <br>  <br> どなたかかっこいい名前ありませんか？ <br>  <>
デフォルトの名無しさん<>sage<>02/07/14 20:30<> higepos <>
ひげぽん<>sage<>02/07/14 20:35<> <a href="../test/read.cgi/tech/1024411711/837" target="_blank">&gt;&gt;837</a> <br> &gt;higepos <br> ちなみになんて読むの？ひげぷおーえす？ <br> もし万が一、有名になって、ちょっとでも外人に名前が知られるように <br> なったとしたら、なんて発音するんだって揉めそう(←もめないって？） <br>  <br>  <>
デフォルトの名無しさん<>sage<>02/07/14 20:35<> ﾋｹﾞﾎﾟｿ <>
＝・ <>sage<>02/07/14 20:36<> まんこ <>
ひげぽん<>sage<>02/07/14 20:37<> <a href="../test/read.cgi/tech/1024411711/839" target="_blank">&gt;&gt;839</a> <br> あ！半角カタカナにして、2chであることを考慮すると <br> 読めるってことですね。 <br> 良い名前随時募集中！！ <>
デフォルトの名無しさん<><>02/07/14 20:44<> 2chOS <>
デフォルトの名無しさん<>sage<>02/07/14 20:52<> ２ちゃんどうず <>
ひげぽん<>sage<>02/07/14 20:56<> <a href="../test/read.cgi/tech/1024411711/842" target="_blank">&gt;&gt;842</a> <br> &gt;2chOS <br> 見た目は非常に良いですね。 <br> にちゃんおーえす? <br> にこす？ <br>  <br> <a href="../test/read.cgi/tech/1024411711/843" target="_blank">&gt;&gt;843</a> <br> &gt;２ちゃんどうず  <br> なんか微妙です。 <br> 2chdows? <br>  <br> OSASK,nwsosもそれぞれ読み方が良く分からないです。 <br> 引き続き募集！ <br>  <>
FreeDOS教徒<>osage<>02/07/14 21:18<> OSASK -&gt; おさすく/おーえすあすく <br> NWSOS -&gt; なうえすおーえす‥‥と呼んでいる <br>  <br> しっかし、いい名前っていうと思いつかんなぁ <>
デフォルトの名無しさん<>sage<>02/07/14 21:19<> GATES FREE <>
ひげぽん<>sage<>02/07/14 21:22<> <a href="../test/read.cgi/tech/1024411711/845" target="_blank">&gt;&gt;845</a> <br> &gt;OSASK -&gt; おさすく/おーえすあすく <br> &gt;NWSOS -&gt; なうえすおーえす‥‥と呼んでいる <br> なるほど。 <br> おさすくかあー <br>  <br> &gt;しっかし、いい名前っていうと思いつかんなぁ <br> そうですよね。 <br> linuxって人の名前からとった割には、 <br> かっこいい名前ですよね。 <br>  <br> <a href="../test/read.cgi/tech/1024411711/846" target="_blank">&gt;&gt;846</a> <br> &gt;GATES FREE <br> ストレートですね。 <br> 受けは良いかもしれませんが・・・ <br> これって、門が開いている(だれでもいいよ） <br> っていう意味にも取れるのかな？ <br> →英語得意な方 <>
デフォルトの名無しさん<>sage<>02/07/14 21:22<> OSの特徴がはっきりしないんじゃ <br> 名前の付けようがないだろ。 <br> プロジェクト名ならhigeposでもかまわん。 <>
デフォルトの名無しさん<>sage<>02/07/14 21:24<> 超ひげぽん　 <>
ひげぽん<>sage<>02/07/14 21:31<> <a href="../test/read.cgi/tech/1024411711/848" target="_blank">&gt;&gt;848</a> <br> &gt;OSの特徴がはっきりしないんじゃ <br> &gt;名前の付けようがないだろ。 <br> &gt;プロジェクト名ならhigeposでもかまわん。 <br> ちょっとこの案に傾いてきた。 <br> でも、ひげ生えてないんだよね。全然・・・ <br> 名前変えようかな・・・ <>
デフォルトの名無しさん<>sage<>02/07/14 21:31<> よし、かっちょいい名前考えてやるから本名晒せ。 <>
ひげぽん<>sage<>02/07/14 21:41<> PJ名(仮称):higeposに決定！！！ <br>  <br> しました。 <br> 今後ともよろしくお願いいたします。 <>
837<>sage<>02/07/14 21:42<> ホントに採用されるとは思わなかった (w <>
ひげぽん<>sage<>02/07/14 21:47<> <a href="../test/read.cgi/tech/1024411711/853" target="_blank">&gt;&gt;853</a> <br> おめでとうございます??? <br> 名付け親ですね。 <>
デフォルトの名無しさん<><>02/07/14 21:59<> ひげぽんプロテクトモード到達 <br> 　　　　　　＆ <br> higeposプロジェクト開始 <br>  <br> まとめてage <>
FreeDOS教徒<>osage<>02/07/14 22:23<> 名前はともかくとして、secondbootのCR0書き換えたあとのジャンプって <br> farジャンプなの？これじゃ問題がないとは言えないような‥‥‥ <br>  <br> 万全を期したいなら、farジャンプにするために <br> 　　　DB　0x2E <br> 　　　JMP なんとか <br> っていう形にしてしまえばいいと思うよ。間違ってたらｺﾞﾐﾝ <>
ひげぽん<>sage<>02/07/14 22:39<> <a href="../test/read.cgi/tech/1024411711/856" target="_blank">&gt;&gt;856</a> <br> この部分で実際ジャンプしていると思います。 <br> でも自信なし・・・ <br> flush_q1: <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db&nbsp;0eah <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dw&nbsp;set_cs_desc1&nbsp;+&nbsp;100h&nbsp;*&nbsp;16 <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dw&nbsp;08h <br>  <>
ひげぽん<>sage<>02/07/14 22:43<> gccでインラインアセンブラということは、 <br> Intel形式ではないのですね・・・ <br>  <br> アセンブラからCでコンパイルした実行イメージを読み込めるようがんばります。 <br>  <br> int&nbsp;main()&nbsp;{ <br> &nbsp;&nbsp;&nbsp;&nbsp;asm("cli"); <br> &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0; <br> } <br> こんなやつがsecondbootから呼べればよいんだよね。 <br> がんばろう。 <>
デフォルトの名無しさん<>sage<>02/07/14 23:30<> ひげぽんがCからアセンブラの関数を呼ぼうとせずに <br> インラインアセンブラにこだわる理由って何？ <>
ひげぽん<>sage<>02/07/14 23:38<> <a href="../test/read.cgi/tech/1024411711/859" target="_blank">&gt;&gt;859</a> <br> 別にこだわってないですよ。 <br> <a href="../test/read.cgi/tech/1024411711/859" target="_blank">&gt;&gt;859</a>さん <br> インラインアセンブラ方法と <br> Cからアセンブラを呼ぶ方法 <br> どちらが方法として一般的ですか？ <br> どちらが容易ですか。 <br> やはりどちらとも経験しておいたほうが良いでしょうか。 <>
デフォルトの名無しさん<>sage<>02/07/14 23:49<> <a href="../test/read.cgi/tech/1024411711/857" target="_blank">&gt;&gt;857</a> <br> それであってますよ。 <br>  <br> [bit16] <br> flush_q1: <br> 　　jmp 8:set_cs_desc1 + 1000h <br>  <br> の方がわかりやすいですけど...。 <>
ひげぽん<>sage<>02/07/15 00:04<> <a href="../test/read.cgi/tech/1024411711/861" target="_blank">&gt;&gt;861</a> <br> &gt;この部分で実際ジャンプしていると思います。 <br> &gt;でも自信なし・・・ <br> &gt;flush_q1: <br> &gt;        db 0eah <br> &gt;        dw set_cs_desc1 + 100h * 16 <br> &gt;        dw 08h <br> ↑は、はじめての486からのパクリです。 <br> はじめて・・・によると、 <br> 「セレクタ地を使ったセグメント間ジャンプ命令をニーモニックでは記述できないので <br> マシン語命令コードを直接している」 <br> そうです。 <br>  <br>          <br>          <br>          <>
ひげぽん<>sage<>02/07/15 00:04<> セレクタ地→セレクタ値 <>
デフォルトの名無しさん<>sage<>02/07/15 00:12<> <a href="../test/read.cgi/tech/1024411711/860" target="_blank">&gt;&gt;860</a> <br> どちらが一般的かは知らんが、俺は関数として <br> アセンブリを呼ぶことを勧める。 <br> まぁ、まずはこれを見ろよ。 <br> http://ghost.math.sci.hokudai.ac.jp/speedmania/speedmania-6.html <br> オールアセンブリでなくC言語を使う理由って何だよ？ <br> 「書きやすさ、読みやすさ、保守のしやすさ、バグの入りにくさ。」 <br> じゃないのか？ <br> このページに載ってるのはとてもC言語らしくない醜い物だと思うぞ、俺は。 <br>  <br> 一方アセンブリで書いた関数をCから呼ぶ場合、アセンブリ部こんな感じ。 <br>  <br> ; <br> ;  void outb(word ioaddr,byte data); <br> ; <br> ;  +-----------------------+ sp <br> ;  |   return addr         | <br> ;  +-----------------------+ +4 <br> ;  |    ioaddr             | <br> ;  +-----------------------+ +8 <br> ;  |    data               | <br> ;  +-----------------------+  <br>  <br> outb: <br>         mov     edx,[esp+4] <br>         mov     eax,[esp+8] <br>         out     dx,al <br>         ret <br>  <br> ブラウザで見ると激しくズレるので等幅フォントで見てくれよ。 <br> Cから呼び出すには、上に書いたプロトタイプにしたがって呼び出せば良い。 <br> よほどキレイだろ。 <br>  <br> 一応、考えられる反論も書いとく： <br> (1)#define マクロを使えばもっとキレイにできる。 <br> → バグの入りやすさは変わらんだろ。 <br>  <br> (2)関数を呼ぶとオーバーヘッドがかかる。 <br> →なら最初からCなんか使うなよ。 <br>  <br> (3)リンクが大変だ。 <br> →割り込みのコールバック関数は iret で戻らなきゃ行けないから、 <br> そこではアセンブリ使わざるを得ないだろ。だから結局 <br> C言語とアセンブリのリンク作業は避けられん。 <br>  <br> ちなみにリンク作業に付いて補足しておくとウチのところでは、 <br>  <br> gcc -c xxxx.c <br> nasm -f aout yyyy.asm <br> ld -oformat binary xxxx.o yyyy.o <br> で上手く行ったぞ。あと必要に応じて -Ttext、 -Tdata、 -Tbbs、 -e  <br> 等をつければOK <>
デフォルトの名無しさん<>sage<>02/07/15 00:14<> <a href="../test/read.cgi/tech/1024411711/862" target="_blank">&gt;&gt;862</a> <br> 「はじめての486」はMASMを前堤に書いているから <br> そうなのかもしれん。しかし、NASMなら<a href="../test/read.cgi/tech/1024411711/861" target="_blank">&gt;&gt;861</a>でできるぞ。 <>
ひげぽん<>sage<>02/07/15 00:23<> <a href="../test/read.cgi/tech/1024411711/864" target="_blank">&gt;&gt;864</a> <br> 大変貴重なご意見ありがとう。 <br> 確かにインラインアセンブラは、アセンブラとCが共存している時点 <br> で見やすくはありませんね。 <br>  <br> #define　lock()　asm("cil")  <br> 見たいなのはありですよね？ <br>  <br> <a href="../test/read.cgi/tech/1024411711/864" target="_blank">&gt;&gt;864</a>さんが <br> せっかく方法を提示してくれたので <br> 明日挑戦してみます。 <>
デフォルトの名無しさん<>sage<>02/07/15 00:24<> <a href="../test/read.cgi/tech/1024411711/866" target="_blank">&gt;&gt;866</a> <br> プログラムやるならコード書くときくらいはミスタイプに慎重になれよ。 <>
ひげぽん<>sage<>02/07/15 00:27<> cliですね。 <>
FreeDOS教徒<>osage<>02/07/15 00:33<> <a href="../test/read.cgi/tech/1024411711/861" target="_blank">&gt;&gt;861</a> <br> プロテクトモードに移行したら速やかにパイプラインの初期化をしなきゃ <br> ヘタな16bitコードが間に入ると落ちたりする‥‥けど、この場合は <br> ぜんぜん問題なさそうですね。なんかいらん心配してました（汗 <>
ひげぽん<>sage<>02/07/15 00:35<> <a href="../test/read.cgi/tech/1024411711/865" target="_blank">&gt;&gt;865</a> <br> なるほどnasmだと出来るのですね。 <br>  <>
デフォルトの名無しさん<>sage<>02/07/15 00:42<> なんかよくわからんけど <br> ひげぽん第一目標クリアしたのかな。 <br> とりあえずおめでとさん〜。 <br>  <br> ＃こんぱいる済みのもアップしてみてほすぃ。 <>
ひげぽん<>sage<>02/07/15 00:48<> <a href="../test/read.cgi/tech/1024411711/871" target="_blank">&gt;&gt;871</a> <br> higeboot.binもアップするようにしました。 <br> Bochsでフロッピーイメージとして設定すると <br> ブートできますよ。 <br> 実際のディスクにddコマンドで書いてもよいけど。 <br>  <>
デフォルトの名無しさん<>sage<>02/07/15 00:54<> <a href="../test/read.cgi/tech/1024411711/864" target="_blank">&gt;&gt;864</a> <br> ちょっと観点がずれてない ? <br> &gt; Cから呼び出すには、上に書いたプロトタイプにしたがって呼び出せば良い。 <br> と言うのは、当然なんだけど、要は呼び出され側をどう作るかじゃないの ? <br>  <br> フルアセンブラで、 <br>  <br> outb: <br> mov edx,[esp+4] <br> mov eax,[esp+8] <br> out dx,al <br> ret <br>  <br> と書くのと C + インラインアセンブラで <br>  <br> void outp(word ioaddr, byte data) <br> { <br> 　asm("out %%dx,%%al" <br> 　　　: <br> 　　　: "d"(ioaddr), "a"(data)); <br> } <br>  <br> と書くののどちらがいいかの問題だと思う。個人的には、[esp+4] なんかが結構 <br> 面倒と思う。特にローカル変数とか持つとね。そう言うところは、コンパイラに <br> やらせるべきだと思うけど...。 <>
デフォルトの名無しさん<>sage<>02/07/15 01:25<> <a href="../test/read.cgi/tech/1024411711/873" target="_blank">&gt;&gt;873</a> <br> ああ、言われてみればそんな気がして来た。 <br> 俺は、よくありがちなCのコードのなかにasm()がポンポン出てくるような <br> インラインアセンブラの使い方が嫌なだけだった。 <br> インラインアセンブラ をごっそり関数で括ってあとは <br> そっちだけ利用すれば一緒だな。 <br>  <br> gasの文法を使わなきゃ行けなかったり、 <br> : "d"(ioaddr)なんてCらしくなくて気持ち悪いってのはあるけど <br> でも、それって確かに主観の問題だ。 <>
ひげぽん<>sage<>02/07/15 01:29<> <a href="../test/read.cgi/tech/1024411711/873" target="_blank">&gt;&gt;873</a>,<a href="../test/read.cgi/tech/1024411711/874" target="_blank">&gt;&gt;874</a> <br> うーん迷いますね。 <br> gasの文法で書かなければいけないのが <br> インラインアセンブラの微妙なところかもしれないです。 <br> →正直 <br>  <br> 結局gasでよいなら、もともとnasmなんか使わなければ･･･ <br>  <br> 迷うので明日の朝起きてから考えよう。 <>
デフォルトの名無しさん<>sage<>02/07/15 01:38<> ひげぽんは、結構質問屋だけど <br>  <br> 質問する前に、自分である程度試しているみたいだし <br> 学習スピードが速いね。 <br>  <br> これって結構すごいと思う。 <br>  <br> 応援しているのでがんばってね。 <br> もうすぐ多分、俺もついていけなくなる（技術的に) <br>  <>
過去ログ読む気はない！<>sage<>02/07/15 02:02<> ここってマジに作ってんの？ <>
デフォルトの名無しさん<>sage<>02/07/15 03:10<> 他の板でこのスレの宣伝してる奴がいる… <br> 宣伝厨うぜぇ。 <>
デフォルトの名無しさん<>sage<>02/07/15 06:31<> このスレ見てると、「おちこぼれ」の気分になれます。 <>
  <>sage<>02/07/15 19:57<> 関数をインライン展開したくなったときにフルアセンブラの関数だと厄介だよね。 <>
デフォルトの名無しさん<>sage<>02/07/15 21:18<> <a href="../test/read.cgi/tech/1024411711/879" target="_blank">&gt;&gt;879</a> <br> この掲示板にいる人がおちこぼれってこと？ <>
デフォルトの名無しさん<><>02/07/15 22:53<> サンプル <>
デフォルトの名無しさん<>sage<>02/07/15 23:15<> cの配列ってbssセクションにメモリが確保されるの？ <br> putchar関数をつくってみたけどちゃんと動かない。 <>
デフォルトの名無しさん<>sage<>02/07/15 23:23<> bssは静的配列だけだろ <>
デフォルトの名無しさん<>sage<>02/07/15 23:39<> <a href="../test/read.cgi/tech/1024411711/883" target="_blank">&gt;&gt;883</a> <br> 初期化してるなら data、 してないなら bss、 ローカル変数ならスタックじゃない？ <br> でも、一度アセンブリ出力したのを見た方が確実かも。 <>
デフォルトの名無しさん<>sage<>02/07/16 01:02<> <a href="../test/read.cgi/tech/1024411711/885" target="_blank">&gt;&gt;885</a>さんの通りでした。どこに配置されているかはわかったものの <br> なにが悪いのかよくわかっていないので、これから解決してみます <>
デフォルトの名無しさん<>sage<>02/07/16 15:45<> .ldsが書けない。欝だ死ぬ <>
デフォルトの名無しさん<><>02/07/16 18:54<> NOWSMART OS クロス開発環境 DL 可能記念あげ。 <br>  <>
886<>sage<>02/07/16 19:00<> だめだどうすればいいのかわかんない．．． <>
デフォルトの名無しさん<><>02/07/16 19:03<> nowsmartって独自の開発環境があるの？ <>
デフォルトの名無しさん<><>02/07/16 19:06<> <a href="../test/read.cgi/tech/1024411711/890" target="_blank">&gt;&gt;890</a> <br> あるよ。 <br> 独自開発の「処理系」が。 <br> 言語自体は独自じゃなく、MASM 準拠、ANSI C 準拠みたいだけど。 <br> まあ、独自言語よりも凄いかも知れんけど。 <>
デフォルトの名無しさん<>sage<>02/07/16 20:42<> <a href="../test/read.cgi/tech/1024411711/889" target="_blank">&gt;&gt;889</a> <br> ソースをここにコピペしてくれれば相談に乗れるかも <>
873<>sage<>02/07/16 21:27<> <a href="../test/read.cgi/tech/1024411711/874" target="_blank">&gt;&gt;874</a> <br> &gt; 俺は、よくありがちなCのコードのなかにasm()がポンポン出てくるような <br> &gt; インラインアセンブラの使い方が嫌なだけだった。 <br> なら、同意。 <br>  <br> &gt; gasの文法を使わなきゃ行けなかったり、 <br> &gt; : "d"(ioaddr)なんてCらしくなくて気持ち悪いってのはあるけど <br> &gt; でも、それって確かに主観の問題だ。 <br> こっちも、同意。GNU の文法ってちょっと変と思う。変数属性の二重括弧と <br> か...。 <>
ひげぽん<><>02/07/16 23:54<> firstboot　real-mode secondbootをディスクを読み込んでjmp  <br>  secondboot　protected-modeへ移行 thridをディスクを読み込んでjmp  <br>  thirdでは、Cからアセンブラで実装した引数なしの関数をよぼうと思う。  <br>    <br>  現在プロテクトモードでディスクを読み込むところを実装中・・・ <>
_<>sage<>02/07/17 00:39<> <a href="../test/read.cgi/tech/1024411711/891" target="_blank">&gt;&gt;891</a> <br> この人、凄すぎ。Cコンパイラが動くならGNUのソフトウェアは移植できないのかな。 <br>  <>
デフォルトの名無しさん<><>02/07/17 00:56<> <a href="../test/read.cgi/tech/1024411711/894" target="_blank">&gt;&gt;894</a> <br> プロテクトモードでディスク読み込みってまだ難くない？ <br> secondboot で、ディスク読んでからプロテクトモードに移行の方が良いと思うよ。 <br> じゃなければ、firstboot で、second third 両方読みこんじゃう手もある。 <>
デフォルトの名無しさん<>sage<>02/07/17 01:07<> ﾊｯｶｰあげ <>
デフォルトの名無しさん<><>02/07/17 01:31<> JAVA版のLinuxってどこにあるんですか <>
デフォルトの名無しさん<><>02/07/17 01:33<> JAVAバイトコードをはく Cコンパイラはありますか <>
889<>sage<>02/07/17 01:37<> <a href="../test/read.cgi/tech/1024411711/892" target="_blank">&gt;&gt;892</a> <br> メモリダンプしてみると初期化した値がどこにもないようでした。 <br> どうやらもっと基本的な部分で間違えているようです。 <>
デフォルトの名無しさん<>sage<>02/07/17 01:42<> <a href="../test/read.cgi/tech/1024411711/900" target="_blank">&gt;&gt;900</a> <br> gcc -Wa,-a -c xxxx.c <br> って試してみた？ <>
デフォルトの名無しさん<>sage<>02/07/17 01:48<> ゴメン↑じゃあまり参考にならなそう。リンクのときに、 <br> -Map mapfile  <br> ってオプションつけてみ。そして、できたmapfile 見ると良いかも。 <br> 俺もこれの正しい読み方分からないけど、なんとなくなら分かる。 <br> 誰か解説ページ知らない？ <>
889<>sage<>02/07/17 01:53<> ひょっとしたらなにが原因かわかったかもしれません。もうちょっと試してみます。 <br> マップファイルをみるとdjgppがつけたと思われるものが色々ありますが、 <br> これっていらないもののような感じがするんだけど．．． <>
903<>sage<>02/07/17 02:30<> 間違ってp2pのスレに書いてしまった．．． <br> 問題は半分解決しました。 <br>  <>
デフォルトの名無しさん<>sage<>02/07/17 03:34<> <a href="../test/read.cgi/tech/1024411711/904" target="_blank">&gt;&gt;904</a> <br> ｽﾏﾝ勝手にコピペさせてもらう。 <br>  <br> &gt;値がないのは、フロッピーの読み込みをちゃんとしていなかったという <br> &gt;初等的なミスでした。 <br> &gt;次に問題なのは、実体のあるアドレスとポインタの値が一定値ずれているということ <br> &gt;なのですが、これはまだどうやったらいいのかわからないままです。 <br>  <br> 「一定値ずれている」のは、ld のオプションで -Tbbs -Tdata を使えばいい。 <>
デフォルトの名無しさん<><>02/07/17 05:32<> <a href="../test/read.cgi/tech/1024411711/895" target="_blank">&gt;&gt;895</a>  <br>  恐らく GCC なども移植できるでしょう。 <>
デフォルトの名無しさん<><>02/07/17 14:14<> おい、お前ら3chねるをみろ！ <>
デフォルトの名無しさん<><>02/07/17 16:56<> ん？なんだ <br> ニコニコプンしかやってないぞ <>
デフォルトの名無しさん<>sage<>02/07/17 17:01<> <a href="../test/read.cgi/tech/1024411711/908" target="_blank">&gt;&gt;908</a>  <br>  ﾜﾗﾀ <>
デフォルトの名無しさん<>sage<>02/07/17 18:34<> 3chでニコニコぷんはやってない。と言う罠。 <br> でもウケタYO <>
デフォルトの名無しさん<>sage<>02/07/17 18:42<> 掲示板の文字が黒い <>
デフォルトの名無しさん<><>02/07/17 19:13<> NHK 総合 : 2ch <br> NHK 教育 : 12ch <br>  <br> ですが、何か？ <>
デフォルトの名無しさん<><>02/07/17 19:55<> 総合3ch <br> 教育9ch <br> が普通でしょ？ニコニコプンは教育。てかニコニコプンって今もやってるの？ <>
デフォルトの名無しさん<>sage<>02/07/17 19:59<> NHK 総合 : 1ch  <br> NHK 教育 : 3ch <br>  <br> これが関東標準だぞ。 <>
志津<>sage<>02/07/17 19:59<> <a href="../test/read.cgi/tech/1024411711/913" target="_blank">&gt;&gt;913</a> <br> てか、どこにすんでんの <>
志津<>sage<>02/07/17 19:59<> <a href="../test/read.cgi/tech/1024411711/912" target="_blank">&gt;&gt;912</a>は関西標準 <br>  <>
デフォルトの名無しさん<> sage <>02/07/17 20:03<> 3chはSunTVが畿内標準デス <>
913<>sage<>02/07/17 20:05<> 私は名古屋です。 <br> 地方で違うんですね。知りませんでした。板汚してごめんよ <br> でも900超えたからいいかな？ <>
デフォルトの名無しさん<>sage<>02/07/17 20:09<> これのことだろ。 <br>  <br> &gt;第7回 7/10・�7/17 <br> &gt;「OSって何?」 <br> &gt;　コンピューターの働きをつかさどるオペレーティング・システム。 <br> &gt;複数のプログラムを交通整理するしくみと、その発展の歴史を紹介する。  <br>  <br> ttp://www.nhk.or.jp/denno/nagare/06/top.html <>
ひげぽん<><>02/07/17 23:22<> <a href="../test/read.cgi/tech/1024411711/896" target="_blank">&gt;&gt;896</a> <br> &gt;プロテクトモードでディスク読み込みってまだ難くない？ <br> &gt;secondboot で、ディスク読んでからプロテクトモードに移行の方が良いと思うよ。 <br> &gt;じゃなければ、firstboot で、second third 両方読みこんじゃう手もある。 <br> 昨日、今日とずっと考えてやっとだ取り付いた結論が↑に書いてありました(笑) <br> さてどこに読み込んで、プロテクトモードに移ったときに <br> どうすれば実行されるのかでまた悩みます・・・ <br>  <br> スレッドが900を超えたのでそろそろ新スレッドを・・・ <>
デフォルトの名無しさん<>sage<>02/07/17 23:57<> <a href="../test/read.cgi/tech/1024411711/920" target="_blank">&gt;&gt;920</a> <br> 読みこむ場所はとりあえずどこでも良いんじゃない？ <br> 実行するにはその場所をcallするかjmpする。 <br> とりあえず簡単なCのプログラムを書いて <br> ld のオプションで -e xxxx -Ttext yyyy -oformat binary <br> を指定すればOK <>
ひげぽん<>sage<>02/07/18 00:25<> <a href="../test/read.cgi/tech/1024411711/921" target="_blank">&gt;&gt;921</a> <br> アドバイスありがとう。 <br> いきなりCのプログラムだと、もし出来なかった場合 <br> どこが悪いのか分からなくなるので <br>  <br> firstboot.asm  512byte <br> secondboot.asm 512byte <br> test.asm       512byte <br> としてfirstbootで2セクタ読み込もうとしています。 <br> firstbootでは、es:bx 0x100:0をバッファとして指定してます。 <br> リアルモードでは、上記の理由から <br> jmp 0x100:0にジャンプしました(secondbootへ) <br> secondbootでプロテクモード移行を済ませた後に <br> test.asmにjmpしようと思うのですが、どこにjmpしたら <br> 良いかが、分からなくなりました。 <br> gdtを設定したことを考慮しなければいけないとは思うのですが、、、 <br>  <>
デフォルトの名無しさん<>sage<>02/07/18 00:40<> <a href="../test/read.cgi/tech/1024411711/922" target="_blank">&gt;&gt;922</a> <br> gdt の設定の仕方が前みたい(csのbase=0)だったら <br> 普通にリニアアドレスを書けば良い。つまり、読みこまれたアドレス。 <br> たぶんひげぽんの場合だと 0x1000 に2セクタ目から読むから <br> 0x1000+512 = 0x1200 をcall ( or jmp) かな。 <br> Cが上手く呼べたかどうか調べるには。 <br>  <br> char c_prog() <br> { <br>     return  'A'; <br> } <br> みたいにして、 eax に'A'がはいってくることを確かめる(アセンブリ部で表示)か、 <br>  <br> void c_prog() <br> { <br>     (*(char *)0xb8000)='A'; <br> } <br> のようにVRAM直接アクセスでよい。 <br> 後者の方がお勧めかな。 <br> ちなみにかっこ付けて <br>  <br> char *vram=0xb8000; <br>  <br> void c_prog() <br> { <br> vram[0]='A'; <br> } <br>  <br> とかやると、変数に上手くアクセスできるかとかそういう問題が <br> からんで来ちゃうから最初はやらない方が良い。でも、↓ならOK <br>  <br> #define vram ((char *)0xb8000) <br>  <br> void c_prog() <br> { <br> vram[0]='A'; <br> } <br> うん。まあ上のどれか試してみて報告しれ。 <>
904<>sage<>02/07/18 02:22<> <a href="../test/read.cgi/tech/1024411711/905" target="_blank">&gt;&gt;905</a> <br> どうもありがとうございました。無事動くようになりました！！ <>
924<>sage<>02/07/18 03:32<> 躓いた大きな点を参考にならないかと思いますが書いておきます。  <br>  ・１トラック当たりのセクタ数は１８  <br>  ・binary形式だと.dataセクションや.bssセクションを使うときにだめっぽい  <br>  ・そこでcoff形式にしたところ始めの部分はいらないので  <br>  　ddでそこを飛ばして書きこむ必要がある。  <br>  ちなみにgccでつけたオプションはインターフェースに載っていたのも踏まえて  <br>  -nostdlib -g -Wall -W -O2 -fcall-used-ebx -fno-common\  <br>  -fnhibit-size-directive -fomit-frame-pointer -fno-ident -fno-builtin -c  <br>  でした。 <>
デフォルトの名無しさん<>sage<>02/07/18 12:45<> &gt; 925  <br>  リンかスクリプト使えって。  <br>    <br>  ld -T simple.ls xxx.obj -o a.exe  <br>  objcopy a.exe a.bin -O binary  <br>    <br>  てな感じで。  <br>    <br>  /* simple linker script */  <br>  OUTPUT_FORMAT(pei-i386)  <br>  SECTIONS  <br>  {  <br>  . = 0x1000;  <br>  .text : { *(.text) }  <br>  .data : { *(.data) }  <br>  .bss  : { *(.bss)  }  <br>  }  <br>   <>
デフォルトの名無しさん<>sage<>02/07/18 18:21<> みなさん、エミュレータは何を使われてますか？ <br> それとも実機なのでしょうか？ <>
デフォルトの名無しさん<><>02/07/18 19:20<> <a href="../test/read.cgi/tech/1024411711/972" target="_blank">&gt;&gt;972</a> <br> だいたいBochsの人が多い。 <br> ていうか過去ログ嫁 <>
デフォルトの名無しさん<>sage<>02/07/18 19:33<> Bochsってコンソールモードじゃ動作しないんでしょ？ <br> Plex86は動くみたいだけど。。 <>
デフォルトの名無しさん<><>02/07/18 19:59<> ＞ひげぽん氏 <br> トリップ付けといたら？ <>
デフォルトの名無しさん<>sage<>02/07/18 20:24<> <a href="../test/read.cgi/tech/1024411711/929" target="_blank">&gt;&gt;929</a> <br> (ﾟДﾟ)ﾊｧ? <>
デフォルトの名無しさん<>sage<>02/07/18 21:50<> VMwareじゃだめなん？ <>
デフォルトの名無しさん<><>02/07/18 22:23<> フロッピーからコードを0x0000に置くとなぜか止まってしまうんですがこれってなんででつか？ <>
デフォルトの名無しさん<> sage <>02/07/18 22:28<> 0：0には16bitの割り込みベクタがあるから、かな？ <>
デフォルトの名無しさん<>sage<>02/07/18 22:34<> <a href="../test/read.cgi/tech/1024411711/932" target="_blank">&gt;&gt;932</a> <br> いいけど、高いよ。 <>
デフォルトの名無しさん<>sage<>02/07/18 22:35<> <a href="../test/read.cgi/tech/1024411711/935" target="_blank">&gt;&gt;935</a> <br> 評価版がタダじゃないの？ <>
ひげぽん<>sage<>02/07/18 22:43<> <a href="../test/read.cgi/tech/1024411711/923" target="_blank">&gt;&gt;923</a> <br> ありがとう。 <br> third.asmにjmpして実行するのには成功したので <br> 以下のようなCのソースを <br> 書いてみました。 <br> 大体こんな感じ <br> int main() { <br> hige(); <br> } <br> char hige() { <br> return 'A'; <br> } <br>  <br> gcc  -c -Wall main.c -o main.o <br> みたいな感じでコンパイルしました。 <br>  <br> cat firstboot.bin secondboot.bin main.o &gt;higeboot.bin <br> としてみたところ、 <br> bochs異常終了・・・撃沈。 <br>  <br> ただいま原因究明中。 <br>  <br> &gt;930 <br> 必要と感じたら付けますよ。 <br>  <>
デフォルトの名無しさん<><>02/07/18 22:54<> だれか次スレ作れーーー <>
ひげぽん<>sage<>02/07/18 23:00<> リンクが必要なことに気づいてきました。 <>
  <>sage<>02/07/18 23:07<> cygwin の gcc で main って関数名を使うと初期化ルーチンへの <br> ジャンプコードが埋め込まれるので注意が必要です。 <>
ひげぽん<>sage<>02/07/18 23:09<> <a href="../test/read.cgi/tech/1024411711/940" target="_blank">&gt;&gt;940</a> <br> cygwinではなく、DJGPPを使っているんですけど <br> まずいですかね？ <br>  <br> リンクってオブジェクトファイルがひとつしかない場合も必要なんでしょうか？ <br>  <br>  <>
デフォルトの名無しさん<>sage<>02/07/18 23:12<> cygwinだろうがDJGPPだろうが、 <br> mainに引数を渡したりランタイムの初期化処理が入るからダメ。 <br> プログラムエントリをmainに出来るならそれもOK <br>  <br> たとえば、VCのリンカだったら -entry:mainCRTStartupみたいな感じで指定できる。 <>
ひげぽん<>sage<>02/07/18 23:14<> <a href="../test/read.cgi/tech/1024411711/942" target="_blank">&gt;&gt;942</a> <br> &gt;cygwinだろうがDJGPPだろうが、 <br> &gt;mainに引数を渡したりランタイムの初期化処理が入るからダメ。 <br> &gt;プログラムエントリをmainに出来るならそれもOK <br>  <br> gccの場合↓のオプションのことでしょうか？ <br> -ffreestanding  <br> produce code that is meant to be run without an OS (ie:kernel code)  <>
デフォルトの名無しさん<>sage<>02/07/18 23:26<> 950の人が次スレたてればいいと思われ。。。 <>
デフォルトの名無しさん<>sage<>02/07/18 23:48<> <a href="../test/read.cgi/tech/1024411711/937" target="_blank">&gt;&gt;937</a> <br> ひげぽん それ main は要らない。 <a href="../test/read.cgi/tech/1024411711/923" target="_blank">&gt;&gt;923</a> は別に主要部分だけ書いたんじゃなくて <br> あれで全て。 <>
ひげぽん<>sage<>02/07/19 00:15<> <a href="../test/read.cgi/tech/1024411711/945" target="_blank">&gt;&gt;945</a> <br> 深読みしすぎました。 <br> ${CC} -c -ffreestanding -Wall ??.c -o ../bin/third.bin <br> でコンパイルしてcatすればいいはずなのに･･･ <br> bochs異常終了 <br> いったい何をやらかしているのだろう。 <br>  <br>  <br> 他のオブジェクトに依存していない場合は、リンク処理は必要ないですよね。 <br>  <>
デフォルトの名無しさん<>sage<>02/07/19 00:22<> リスティングしてコード読んでみれば？ <>
デフォルトの名無しさん<>sage<>02/07/19 00:24<> <a href="../test/read.cgi/tech/1024411711/946" target="_blank">&gt;&gt;946</a> <br> ソースうpれ。Makefileも忠実にな。 <>
  <>sage<>02/07/19 07:32<> binaryでリンクした方が良い気がするけどなぁ。 <br> *.oのヘッダとか自分で解析するの面倒だし。 <>
デフォルトの名無しさん<>sage<>02/07/19 07:55<> <a href="../test/read.cgi/tech/1024411711/946" target="_blank">&gt;&gt;946</a> <br> &gt; 他のオブジェクトに依存していない場合は、リンク処理は必要ないですよね。 <br>  <br> オブジェクトファイルのヘッダがついてるだろ… <>
デフォルトの名無しさん<><>02/07/19 17:02<> nasm で、セグメント・オーバライト・プレフィックスってどう指定すりゃいいん <br> でしょうか ? 具体的には、lodsb に CS セグメントオーバーライトしたいんで <br> す。 <br> 　cs:loadsb <br> とか、 <br> 　cs: <br> 　loadsb <br> とかやってみたけど、エラーになっちゃう。 <br> 　db 2eh <br> 　loadsb <br> とやると、ちゃんと動くから命令としてはサポートしてると思うんだけど....。 <>
951<>sage<>02/07/19 17:26<> <a href="../test/read.cgi/tech/1024411711/951" target="_blank">&gt;&gt;951</a> <br> 間違えた loadsb → lodsb だった。(一番上は、合ってんのに暑さでボケ <br> てたみたい。) <>
デフォルトの名無しさん<>sage<>02/07/19 20:40<> <a href="../test/read.cgi/tech/1024411711/952" target="_blank">&gt;&gt;952</a> <br> cs lodsb <>
デフォルトの名無しさん<>sage<>02/07/19 20:48<> <a href="../test/read.cgi/tech/1024411711/951" target="_blank">&gt;&gt;951</a> <br> ？ <>
ひげぽん<>sage<>02/07/19 21:11<> 次スレッドを作りました。 <br> こちらへどうぞ <br> ↓ <br> http://pc3.2ch.net/test/read.cgi/tech/1027080631/ <>
951<>sage<>02/07/19 22:19<> <a href="../test/read.cgi/tech/1024411711/953" target="_blank">&gt;&gt;953</a> <br> サンクス。でも、これは思いつかないなぁ...。 <br>  <br> <a href="../test/read.cgi/tech/1024411711/954" target="_blank">&gt;&gt;954</a> <br> アセンブラスレで聞いたほうが良かったかな ? こっちなら、nasm 使ってる人も <br> 多いかと思ったもので...。(ひげぽん Boot をちょっと改造して遊んでたので、 <br> まんざら関係ないわけじゃないということで許してちょ。) <>
デフォルトの名無しさん<>sage<>02/07/20 11:49<> OSをつくろうpart3 <br> http://pc3.2ch.net/test/read.cgi/tech/1027080631/ <>
次スレ<>sage<>02/07/20 11:50<> OSをつくろうpart3 <br> http://pc3.2ch.net/test/read.cgi/tech/1027080631/l50 <>
yuji<><>02/07/25 21:01<> うんこ <>
次スレ案内<>sage<>02/07/26 12:09<> OSをつくろうpart3 <br> http://pc3.2ch.net/test/read.cgi/tech/1027080631/l50 <>
デフォルトの名無しさん<><>02/08/25 16:41<> OSのソースを見たいのですが何処で見れるでしょうか <>
デフォルトの名無しさん<>sage<>02/08/26 17:38<> もう見つけたと思うけど <br> http://cvs.sourceforge.jp/cgi-bin/viewcvs.cgi/higepos/higepos/src/ <br> あと次スレがあるからこっちを上げないでね <>
デフォルトの名無しさん<><>02/09/09 21:09<> あげ <>
デフォルトの名無しさん<>sage<>02/09/10 17:48<> 日本語でＯＳってつくれるでしょうか？ <br> 是非こっちにきて、言語板の電脳のよくわからない住民に教えてやってくださいな。 <br> http://academy.2ch.net/test/read.cgi/gengo/1028424001/l50 <>
デフォルトの名無しさん<><>02/09/10 23:11<> <a href="../test/read.cgi/tech/1024411711/964" target="_blank">&gt;&gt;964</a> <br> 日本語ニーモニックを開発シル <br>  <>
デフォルトの名無しさん<><>02/10/24 05:21<> てｓｙと <>
デフォルトの名無しさん<><>02/11/02 22:26<> ｄ <>
デフォルトの名無しさん<>sage<>02/11/22 15:30<> 0:0には16bitの割り込みベクタがあるから、かな? <>
デフォルトの名無しさん<><>02/12/08 02:23<>   <>
デフォルトの名無しさん<>sage<>02/12/09 23:32<> うめ、よろし？ <>
デフォルトの名無しさん<>sage<>02/12/12 22:26<> こっちも...捧げつつ埋め！ <br>  <br> 感謝を捧げつつ....てか！？ <>
デフォルトの名無しさん<>sage<>02/12/13 23:54<> ひげぽんこっちには来ないかな？捧げ埋め <>
デフォルトの名無しさん<>sage<>02/12/15 03:17<> sa sage ume <>
デフォルトの名無しさん<>sage<>02/12/15 20:47<> ume <>
デフォルトの名無しさん<>sage<>02/12/15 21:05<> 埋め立て <>
デフォルトの名無しさん<>sage<>02/12/17 00:17<> 埋め、ただしまったりと <>
ひげぽん<>sage<>02/12/18 23:22<> part3がDAT落ちしましたね。残念。 <br> 埋め(・x・) <>
デフォルトの名無しさん<>sage<>02/12/19 21:27<> 一日一人限定ですか ＞ひげぽん <>
デフォルトの名無しさん<>sage<>02/12/20 00:13<> うめ!(一日一梅) <>
ひげぽん<>sage<>02/12/21 16:59<> <a href="../test/read.cgi/tech/1024411711/978" target="_blank">&gt;&gt;978</a> <br> まったりといきませう。 <br> 産め。 <>
デフォルトの名無しさん<><>02/12/22 18:39<> あげ <>
デフォルトの名無しさん<>sage<>02/12/23 00:34<> 梅肉！！ <>
デフォルトの名無しさん<>sage<>02/12/23 00:45<> 梅毒！！ <>
FreeDOS教徒<>osage<>02/12/23 10:23<> 梅田！！ <>
ひげぽん<>sage<>02/12/23 10:49<> Women <>
デフォルトの名無しさん<>sage<>02/12/23 23:53<> 淋病！！ <>
デフォルトの名無しさん<>sage<>02/12/24 02:04<> イブ埋め！ <>
デフォルトの名無しさん<>sage<>02/12/24 02:28<> 梅とくか。 <>
1000とり<>sage<>02/12/24 12:44<> でもしようかな <br>  <>
1000とり<>sage<>02/12/24 12:47<> あと10 <>
1000とり<>sage<>02/12/24 12:47<> 9 <>
1000とり<>sage<>02/12/24 12:48<> ｿﾛｿﾛ8 <>
1000とり<>sage<>02/12/24 12:48<> 7? <>
1000とり<>sage<>02/12/24 12:50<> (@@) <>
1000とり<>sage<>02/12/24 12:50<> 5?! <>
1000とれ<>sage<>02/12/24 12:52<> 4か！とりてーな <>
1000とれ<>sage<>02/12/24 12:53<> １０００番！ <>
1000とれ<>sage<>02/12/24 12:53<> 100000000！ <>
1000とれ<>sage<>02/12/24 12:54<> 2000ぬ <>
1000とれ＠いえい@(・◎・)<>sage<>02/12/24 12:55<> 撮ったぞー <>
１００１<><>Over 1000 Thread<>このスレッドは１０００を超えました。 <br> もう書けないので、新しいスレッドを立ててくださいです。。。 <>
