WindowsのVisual Studioでアプリケーションを作る際に、お客様が32bit Windowsを使っていることを考慮して、32bitのアプリケーションを作っています。
32bitのアプリケーションでは通常は2GBまでしかアドレッシングできませんが、
EDITBIN /LARGEADDRESSWARE
を使うと2GBを超えるアドレスの指定が可能となります。
EDITBIN /LARGEADDRESSWARE
EDITBIN.exeは、Visual Studio付属のユーティリティの一つです。
以下のオプションがあります。
オプション | 目的 |
---|---|
/ALLOWBIND | DLL をバインドすることができるかどうかを指定します。 |
/ALLOWISOLATION | DLL または実行可能ファイルのマニフェスト検索の動作を指定します。 |
/APPCONTAINER | Windows ストア のアプリケーションとかどうか AppContainer のアプリケーション内で実行するよう指定します。 |
/BIND | 速度の読み込み時に指定したオブジェクトのエントリ ポイントのアドレスを設定します。 |
/DYNAMICBASE | DLL または実行可能イメージが ASLR (ASLR) を使用してロード時にランダムに再ベースかどうかを指定します。 |
/ERRORREPORT | Microsoft に内部エラーを報告します。 |
/HEAP | バイトの実行可能イメージのヒープのサイズを設定します。 |
/HIGHENTROPYVA | DLL または実行可能イメージの高いエントロピ (64 ビット) の ASLR (ASLR) をサポートしているかどうかを指定します。 |
/INTEGRITYCHECK | 読み込み時にデジタル署名をチェックするかどうかを指定します。 |
/LARGEADDRESSAWARE | かどうか 2 GB を超えるオブジェクトがアドレス指定します。 |
/NOLOGO | EDITBIN の著作権情報を表示しません。 |
/NXCOMPAT | 実行可能イメージは Windows データ実行防止機能との互換性があるかどうかを指定します。 |
/REBASE | 指定されたオブジェクトのベース アドレスを設定します。 |
/RELEASE | ヘッダーにチェックサムを設定します。 |
/SECTION | セクションの属性をオーバーライドします。 |
/STACK | バイトの実行可能イメージのスタックのサイズを設定します。 |
/SUBSYSTEM | 実行する環境を指定します。 |
/SWAPRUN | 実行可能イメージをスワップ ファイルにコピーする必要がある指定し、そこからことを実行します。 |
/TSAWARE | アプリケーションがマルチユーザー環境で動作するように設計されていることを示します。 |
/VERSION | ヘッダーのバージョン番号を設定します。 |
Visual Studioで32bitアプリケーションを作った後で、2GBを超えるアドレッシングを可能にするには、
/LARGEADDRESSAWARE
を使います。
EDITBINは、設定するためのコマンドです。
DUMPBIN.exe
DUMPBIN.exeは、Visual Studio付属のユーティリティの一つです。
以下のオプションがあります。
DUMPBINは、EDITBINと異なり、確認するためのコマンドです。
2GB以上のアドレッシングの確認方法と変換方法
Visual Studioで32bitのある実行モジュールを作成したとします。
以下のコマンドを実行してモジュールを確認します。
C:\>dumpbin.exe /headers (実行モジュール名)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
Dump of file aaa.exe PE signature found File Type: EXECUTABLE IMAGE FILE HEADER VALUES 14C machine (x86) 3 number of sections 5539FF2A time date stamp Fri Apr 24 17:30:34 2015 0 file pointer to symbol table 0 number of symbols E0 size of optional header 102 characteristics Executable 32 bit word machine |
次に、この実行モジュールを2GBを超えるアドレッシングを可能にします。
C:\>editbin.exe /LARGEADDRESSAWARE (実行モジュール名)
これで実行モジュールが2GBを超えるアドレッシング可能となりました。
次に、以下のコマンドを実行して確認します。
C:\>dumpbin.exe /headers (実行モジュール名)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
Microsoft (R) COFF/PE Dumper Version 10.00.40219.01 Copyright (C) Microsoft Corporation. All rights reserved. Dump of file aaa.exe PE signature found File Type: EXECUTABLE IMAGE FILE HEADER VALUES 14C machine (x86) 3 number of sections 5539FF2A time date stamp Fri Apr 24 17:30:34 2015 0 file pointer to symbol table 0 number of symbols E0 size of optional header 122 characteristics Executable Application can handle large (>2GB) addresses 32 bit word machine |
Application can handle large (>2GB) addresses
と表示されていれば、無事に変換できました。
まとめ
いかがでしたか?
簡単に2GB越えのメモリを扱える32bitアプリケーションに変換することが可能であることがわかりました。
プログラミングの無料レッスン体験
約8,000名の受講生と80社以上の導入実績のあるプログラミングやWebデザインのオンラインマンツーマンレッスンCodecamp
<Codecampの特徴>
1 現役エンジニアによる指導
2オンラインでのマンツーマン形式の講義
3大手企業にも導入されている実践的なカリキュラム
↓無料体験レッスン実施中です。
コメント