3

私は多くのプログラミング言語に出会いました。それぞれに魅力がありましたが、嫌いなところもいくつかありました。したがって、私は独自のプログラミング言語を設計しており、気に入ったものを他の言語で実装するだけです。

ほとんどが憶測ではありますが、いくつかの調査を行った後、プロセッサとオペレーティング システムがどのように機能するかをある程度理解していると思います。命令ポインターといくつかの (仮想) レジスターを使用して作成したカスタム形式の命令を読み取り、解釈するインタープリターを作成することができ、今のところその形式にコードをコンパイルしています。

ただし、コンパイラがバイナリを生成してバイナリを生成し、それを解釈してから解釈するようになったため、これはばかげているように思えます。現在の方法にはいくつかの利点がありますが (1 回コンパイルするだけでほぼどこでも実行できるなど)、オペレーティング システムが読み取ることができるコードを実際に生成するコンパイラを作成するときに、どこから始めればよいか知りたいです。

PE と ELF についていくつか聞いたことがありますが、これらの形式を低レベルで説明しているものは見つかりませんでした。ほとんどのものは、あらゆる種類のものを実行するために使用する優れた概念に関するもののようですが、最初に 16 ビットの ...、次に 20 ビットの ...、次に 28 の . ..、次に再配置テーブル、次に...を意味するいくつかの指示...など。

また、C++ を使用しています。

4

1 に答える 1

3

これは、Windows 用の小さな/単純な PE ファイルを作成する方法に関する記事です。

http://www.phreedom.org/research/tinype/

その記事は、Linux 用の小さな/単純な ELF ファイルを作成するためのガイドにリンクしています。

http://www.muppetlabs.com/~breadbox/software/tiny/teensy.html

どちらもファイル形式に関する多くの技術的な詳細があり、nasm や類似のツールについて言及しています。目標を達成するための最良の方法は、アセンブリ コードを生成し、nasm または別のアセンブラに実行可能ファイルを作成させることだと思います。

于 2012-08-22T14:06:40.883 に答える