私はいくつかの高水準インタプリタと簡単なバイトコードコンパイラとインタプリタを書いています。私は小さなオペレーティングシステムのために強力な中間言語を作り始めたいと思います。アセンブリレベルでWindows API呼び出しはどのように行われますか?
これはWindowsのように独自のAPIを持っています。このプロジェクトを開始できないのは、これらのAPI呼び出し(たとえばwin32フォームapi)がアセンブリレベルでどのように行われているかを知ることだけです。
たとえば、最適化されていないCコードのアセンブリ出力を見て、呼び出しがどのようにしっかりと行われているかを確認する方法はありますか?またはWWW上の任意の情報源?事前に
おかげ
デバッガを持って行ってください:) – RbMm
Win32 APIは、DLL関数とCOMインターフェイスのセットに過ぎません。 .NETフォームのようなAPIは、その基盤の上に構築されています。アセンブリで正規の関数呼び出しを行う方法を知っていますか?コールスタックの仕組みを理解していますか? DLLの関数呼び出しとインターフェイスメソッド呼び出しは、通常の関数呼び出しと同様で、呼び出しスタックを同じ方法で設定します。関数/メソッドのメモリアドレスを取得するために実行時ポインタを使用して '呼び出し 'する必要があります。アプリケーションの起動時に、またはオブジェクトのvtableなどからOSローダーが読み込むアプリケーションのDLLルックアップテーブルから取得します。 –
システムコールとWindows API呼び出しを区別する必要があります。独自のオペレーティングシステムを作成している場合は、Windows API呼び出しではなくシステムコールを作成しますので、システムコールを知っておく必要があります。 – EJP