1. ホーム
  2. アセンブリ

[解決済み】オペレーティングシステムなしでプログラムを実行するには?

2022-04-03 14:21:57

質問

オペレーティングシステムが起動していない状態で、プログラムを単独で実行するにはどうすればよいのでしょうか? 例えば、フラッシュドライブからコンピュータを起動すると、CPUにあるプログラムが実行されるような、コンピュータが起動時にロードして実行できるアセンブリプログラムを作ることは可能ですか?

どのように解決するのですか?

<ブロッククオート

オペレーティングシステムが起動していない状態で、プログラムを単独で実行するにはどうしたらいいですか?

バイナリコードを、プロセッサが再起動後に探す場所(例えばARMのアドレス0)に配置するのです。

<ブロッククオート

コンピュータが起動時にロードして実行できるようなアセンブリプログラムを作成できますか(例:フラッシュドライブからコンピュータを起動すると、ドライブにあるプログラムが実行される)?

質問に対する一般的な答え:できます。 よくベアメタルプログラミングと呼ばれるものです。 フラッシュ・ドライブから読み出すには、USBが何であるかを知り、このUSBで動作するドライバを用意する必要があります。また、このドライブ上のプログラムは、ある特定のフォーマットで、ある特定のファイルシステム上になければなりません... これは通常ブートローダが行うことですが、ファームウェアが小さなコードブロックしかロードしないのであれば、プログラムはそれ自身のブートローダを含むことができ、自己充足的です。

多くのARMボードでは、そのようなことをいくつか行うことができます。基本的なセットアップを支援するブートローダを備えているものもあります。

これ Raspberry Piで基本的なオペレーティングシステムを構築する方法についての素晴らしいチュートリアルがあります。

編集 この記事とwiki.osdev.org全体があなたの質問のほとんどに答えてくれるでしょう。 http://wiki.osdev.org/Introduction

また、ハードウェアで直接実験したくない場合は、qemuなどのハイパーバイザーを使って仮想マシンとして実行することができます。仮想化された ARM ハードウェア上で "hello world" を直接実行する方法を参照してください。 こちら .