アセンブリでオペレーティングシステムを書きたいと思っています。「ばか、%s、%s、%s、%s などをもっと上手にしないと、そのことを考えられない」なんて言わないでください。これは通常、実践して学ぶものではなく、数か月の作業が必要であることはわかっていますが、試してみたいと思います。ここで答えが得られない場合は、別の場所で質問します. nasm を使用した入門チュートリアルへのリンク、またはアセンブリで C 関数を使用せずに画面に書き込む方法を教えてください。私はほとんどすべての主要な組み立て手順を知っており、長い間コーディングしてきました。編集:nasmとwin32を使いたい
4 に答える
上記の他の優れた提案に加えて、次の場所に Nasm フォーラムがあります (また、Nasm の最新バージョンとフレンドリー マニュアルを入手できます)。
「Netwide」アセンブラのホームページに国コードがあるのは奇妙に思えるかもしれません。「米国」と考えないでください。「いいね、ナズム、おい!」と考えてください。:)
pmode に切り替えると BIOS 割り込みが使用できなくなるため、ハードウェアに直接アクセスする方法を学ぶことは理にかなっています。画面への書き込みは、最初は簡単です。「画面」は通常 0xB800000 (segment:offset 形式の B800:0000 - おそらく必要になる) にあることを知っておく必要があります。レイアウトは、文字が 1 (偶数) バイト、「属性」(主に色) が 1 (奇数) バイトであることを知っておく必要があります。割り込みを使用していなくても、RBIL には「ports.lst」も含まれています。そして、上で述べたように、osdev.org はあなたの新しい親友です!
ハッピーブーティン、
フランク
C 関数やシステム コールを使用せずにこれを行う唯一の方法は、アセンブリ コードを他のオペレーティング システムなしで実行するか、Bochs や QEMU などのエミュレーター内で実行することです。
これは、画面に書き込み、C 関数を使用せず、そのレベルでは Win32 に依存しない nasm の簡単なチュートリアルです。Windows での実行中にそのようなことを行うものを作成したい場合は、そのためのソフトウェア割り込みインターフェイスを習得できない限り、C 関数が唯一の方法であると思います。
余談ですが、osdev.org には、オペレーティング システム開発のさまざまな側面について、アセンブリでコードを記述する方法など、多くの優れた記事やチュートリアルが含まれています。
私が同意するニック・モーガンを引用するには:
まあ、x86 の学習は役に立たないと思います。日常の仕事でアセンブリ言語を書く必要はないと思います。この [アセンブラの学習] は純粋に学術的な演習であり、心と思考を拡張するためのものです。6502 [アセンブリ言語] は別の時代に書かれました。開発者の大半が、これらの新しい高水準プログラミング言語ではなく、直接アセンブリを書いていた時代です。だから、それは人間によって書かれるように設計されました。最近のアセンブリ言語はコンパイラによって書かれることを意図しているので、コンパイラに任せましょう。さらに、6502 は楽しいです。x86 が楽しいと言う人はいません。
私は現在、DCPU-16 アセンブリ言語(聞いたことがあるかもしれません) で、楽しみのために「オペレーティング システム」も書いています。これは、ブラウザ内で利用可能な多くの「IDE」の1 つ (たとえば、このなど) を使用できるので楽しいです。x86 アセンブリについて理解する必要があるのと同じ原則が適用されると思います。
Win32 をターゲットにしている場合は、Iczelion による従来の Win32 アセンブリ チュートリアルがあります: http://win32assembly.online.fr/tutorials.html