2016-05-22 10 views
0

実行可能ファイル(例:Windowsの場合は.exe)はバイナリです。私は16進数のファイルとアセンブリについて知っています。私はまた、OS APIについて知っています。理論的には、OS APIを使用してNASMでアセンブルし、実行可能ファイルを取得するアセンブリコードでWebブラウザー全体を書くことができます。しかし、私の質問は、どのようにオペレーティングシステムは、アプリケーションを制御するのですか?たとえば、ビデオメモリに書き込み、ランダムなもので画面を埋めるWindows上の実行可能ファイルを持つことができます。私はこれを(実際に)試して、Windowsはアプリケーションを停止します。アプリケーションをどのように制御しますか?さらに、Linuxの実行可能ファイルを持っていて、まったく同じハードウェアのWindowsマシンで実行しようとすると、理論的には(プロセッサのアーキテクチャは同じですが、Windows APIは使用しませんが)動作するはずですそれは傾ける。 OSはどのくらい正確にバイナリを制御していますか?実行可能なバイナリとOS

答えて

0

オペレーティングシステム、特にWindowsとLinuxは、他のアプリケーションとオペレーティングシステム自体をアプリケーションから保護します。したがって、アプリケーションが理想的にはユーザーとして実行することができない保護レイヤーがあります。

ピクセルを画面に表示したい場合は、オペレーティングシステムにピクセル値を入力する必要があります。オペレーティングシステムがパンチスルー(rootとして実行する必要があるかもしれないmmapを呼び出す)方法を許可している場合、あなたは自由にコンピュータをゴミ箱に入れることができます。計画/設計は、あなたが直接アクセスできるようにすることではなく、仮想空間、サンドボックスをアプリケーションに適用するために、あなたは自由に読み書きできるRAMを備えた仮想アドレス空間を持っていますが、それ以外では、シャットダウンするか、少なくとも何らかの方法で処理する必要があります。

普通のWindowsプログラムやLinuxプログラムの場合は、どの言語を使ってアプリケーションを作成しますか?そのターゲット、asm、ada、Cなどのマシンコードを生成するには何もできません。特定の仮想マシン(Java、Python)を話す場合は、選択肢が制限されます。戻り値以外の何らかの出力を持つように、あなたのスペースで遊ぶ以上のことをしたいのであれば、システムが必要とするターゲットとオペレーティングシステム固有の方法でシステムコールを行う必要があります。もう一度、適切な命令、レジスタ、メモリ構造、またはオペレーティングシステムが必要とするものを、使用している言語やライブラリにリンクしたり、他のプログラムとリンクさせたりすることができますあなたは完全に実行可能な、nasmを使用してアセンブリ言語でWebブラウザを作成したいと思っています。 osがサポートしているバイナリ形式を作成し、システムが必要とする方法で必要に応じてシステムコールを作成する必要があります。

関連する問題