警告なしに、7-Zipで> 4GB SFXアーカイブ(自己解凍アーカイブ)を作成しました。受信者がそれを抽出しようとしたときに、次のエラーリボンが表示されました。
.exe
それが4GBよりも大きいためです。7-Zipをインストールした後、彼はアーカイブを抽出できましたが、なぜWindowsがそのような実行可能ファイルを実行できないのでしょうか。そして、いくつかのオーバーライドを介して可能ですか?
警告なしに、7-Zipで> 4GB SFXアーカイブ(自己解凍アーカイブ)を作成しました。受信者がそれを抽出しようとしたときに、次のエラーリボンが表示されました。
.exe
それが4GBよりも大きいためです。7-Zipをインストールした後、彼はアーカイブを抽出できましたが、なぜWindowsがそのような実行可能ファイルを実行できないのでしょうか。そして、いくつかのオーバーライドを介して可能ですか?
回答:
このスレッドによれば、Windowsは4GBを超える実行可能ファイルをサポートしません。
http://sourceforge.net/p/sevenzip/discussion/45798/thread/337fc13e/
コメンター「Igor Pavlov」は、7-Zipの作成者であり保守者です。そのコメントはいくぶん控えめですが、sourceforgeフォーラムには同じアドバイスを繰り返す他のスレッドがあります。64ビットOSで実行可能ファイルを実行しても、Windows実行可能ファイルのサイズの制限、つまりWindows PEフォーマット自体の制限である可能性があるため、違いはないと思います。
64ビットプログラムの作成に関するこの記事は、次のことを示唆しています。
Win64ファイルの実行可能な「イメージ」(メモリに読み込まれたコード/データ)のサイズは2GBに制限されています。これは、AMD64 / EM64Tプロセッサがほとんどの命令に相対アドレッシングを使用し、相対アドレスがdwordに保持されるためです。dwordは、±2GBの相対値しか保持できません。
おそらくイゴールは±2GBを使用して4GBを達成する方法を考え出しました。
4GiB - 1B = 2^32 - 1 bytes = 4,294,967,295 bytes
。制限はです。.EXEファイルの形式でWinRARを使用して自己解凍型アーカイブを作成することにより、Windows 10 64ビットでそれを確認できました。サイズがの実行可能ファイル4GiB
は起動しませんが、4GiB - 1B
正常に動作します。
* .exe、*。dllなどのWindows実行可能ファイルには、PE32と64ビットバージョンのPE32 +(32ビットおよび64ビットバージョン)。
第2に、実行可能ファイルは実行前に完全にRAMに読み込まれ、Windowsに制限されていない場合でも(そうである場合でも)ハードウェアによって簡単に制限される可能性があります。