2010-11-25 6 views
4

Visual C++を使用して、カスタマイズされたApache Webサーバーを構築する必要があります。私が達成しようとしている目標は次のとおりです。Apacheのソースコードで関数やデータのいくつかを指定し、output .exeファイルの4kページのアラインメントセクション(.text .data .bssではなく)に配置します。Visual C++でいくつかの関数を.exe出力の新しいメモリセクションにグループ化する方法

オンラインで見つけることができるクローゼットの解決策は、各機能を異なるCOMDATにコンパイルするためにuse/Gyコンパイラオプションです。次に、/ ORDERリンカオプションを使用してCOMDATを所定の順序で配置します。ただし、セクション内で並べ替えるだけで、.exe出力のセクションレイアウトを変更したり、新しいセクションを作成したりすることはありません。 Linuxでは、私の目標を達成するために、コンパイラの属性「セクション」とリンカスクリプトを使用できます。 Visual C++には同等のソリューションがありますか?ありがとうございます:-)

答えて

3

#pragma code_segコードを配置するセグメントを指定します。名前を指定できるだけでなく、コンパイラは名前のスタックを保持するので、必要に応じて現在の状態をプッシュ/ポップすることができます。

+0

関数とデータを別のページアラインセクションに配置した後、後でそれらを連続したメモリ領域に入れることはできますか?どうやってやるの?たとえば、テキスト1、テキスト2、データ1セクションがb.oのa.o、text3、text2、data2セクションにあり、a.o、b.oがc.exeを作成するためにリンクされているとします。 c.exeのメモリレイアウトが(text1、text2、text3、data1、data2、.text、........)であることを確認するにはどうすればよいですか? – cyclone

+0

@cyclone:あなたができることはまったく確信していません。これがサポートされていれば、モジュール定義ファイルはそれをサポートする明白な場所になりますが、そうではありません。 –

関連する問題