メモ帳に1と0をいくつか入力し、something.exeとして保存して、プログラムを取得したいと思います。明らかに、それはそれほど複雑ではありません。こんにちはと言ってもうまくいくでしょう。テキストを出力するにはどうすればよいですか?すぐに閉じないように一時停止するにはどうすればよいですか?これをすべて言っているところに誰かが持っているリソースはありますか?
2 に答える
テキストエディタを使用し、バイナリ(1と0)または16進数をテキストファイルに入力してから、そのASCIIファイルを読み取り、意図したバイナリビットまたはバイトとして保存する小さなプログラムを作成すると、より良いエクスペリエンスが得られると思います。 。基本的にマシンコードアセンブラを作成します。
これをさらに進める前に、関心のあるプロセッサとオペレーティングシステムを指定する必要があります。命令セットのオペコード/マシンコードを知っているだけでなく、オペレーティングシステムのバイナリファイル形式(coff、elf、exeなど)を知っている必要があり、そのすべての情報を手動でコーディングする必要があります(はるかに適しています)必要に応じて、マシンコードアセンブラにそのヘッダーを作成させます)。
例として、 http: //github.com/dwelch67/lsasimで、私が作成したシミュレーターとツールを備えた教育用命令セットを取り上げます。「バイナリファイル形式」は、読み取り可能な16進数のマシンコードを含むASCIIファイルです。シミュレーターはそれを読み取って実行します。必要に応じて(最初にテストした方法です)、アセンブリ言語の代わりにマシンコードを手動でコーディングできます。私はオペレーティングシステムなどを持っていません。マシンコードファイルを読み取るパーサーは、それをプロセッサのシミュレートされたメモリであるバイナリの1と0のバッファに変換します。
昔のdosとwindowsでは、デバッグコマンドラインプログラムによってこの種のことが簡単になり、アセンブリまたはマシンコードバイトのいずれかを手動でコーディングし、保存するときに.com実行可能ファイルに簡単に保存できます。masmのようなソフトウェアツールを購入する余裕がなかったので、デバッグを使用してx86アセンブリ言語を学んだのは私だけではなく、人気のある無料のアセンブラーがasm86などのものを入手するためのモデムを持っていなかったと確信しています(数年後まで私はそれらの1つを買う余裕がありました)。デバッグがまだWindowsコマンドラインの一部である場合は、おそらく今日でもそのツールを使用してこれを行うことができます。
最初に、それが実行される特定のプロセッサと、環境(raw CPU、一部のオペレーティングシステム、その他)を特定する必要があります。環境から、正しいバイナリ形式を決定する必要があります。CPUから、実際の機械語を決定する必要があります。他にも決定する必要のあることがいくつかあります。
あなたの質問は「人生はどこから来るのか」かもしれません。-はい、答えることはできますが、簡単なQ&Aフォーラムでは有益な結果は得られません。これをさらに追求したい場合は、アセンブリ言語の詳細に集中して、コンピュータ組織のコースを受講する(または単に本を読む)ことを検討してください。そこから、アセンブリをマシンコードに変換する方法を学ぶのはそれほど難しくありません(ただし、学ぶことはまだかなりあります)。