• 締切済み

exeファイルのセグメント

exeファイル内のデータは一列にならんでますが、どうやって、セグメントを分けてるのでしょうか? 特に、サイズはどうやって指定されてるのでしょうか? .code [0000h]-[0100h] .data [0100h]-[0200h] こういったことを、どこで指定されてるのでしょうか? ヘッダなら、どこにあるのでしょうか?もしくは、それが分かりやすく解説されてるサイトなど教えていただけませんでしょうか? ちなみに、昔の80386時代のexeファイルです どなたかご教授お願いします

みんなの回答

  • notnot
  • ベストアンサー率47% (4848/10262)
回答No.1

codezineの連載とか? 前に読んだような気がします。

adgasfdds
質問者

お礼

情報をありがとうございます。

関連するQ&A

  • exeファイルを

    exeファイルをサイズ指定して、圧縮してくれるようなソフトはありますか? 3.6MBを1.25MBまで圧縮したいのですが・・

  • exeファイルの作り方

    VB勉強用として買った本に、著者の自作ソフトウェアのソースコードと実行可能ファイルが入ったCDがあるんですが、そのデータをデスクトップにコピーしてexeファイルをつくって自分で著者が作ったソフトを使いたいなぁと思っています。exeファイルを作るにはどうしたらいいか調べたところ、ファイル-exe~ でできるらしいのですが、そのようなものが見当たりません。 どうやればexeファイルがつくれるのですか? Visual Stadio2005を使用しています。

  • exeファイルが開かないのですが

     WINDOWS XPで「フォルダオプション」「ファイルの種類」「新規」でファイルの拡張子「exe」を追加後に削除したところ、すべてのexeファイルが実行できなくなってしまいました。  ファイル名を指定して実行でも、「このファイルを開けません」となります。  対処法がありましたら、ご教授お願いします。

  • プログラムの追加

    80386のexeファイルをいじっているのですが、つまずいております。 バイナリコードをexeファイルの最後に追加した場合、それを実行するためには、 コードセグメントのプログラムから、どうジャンプすればいいのでしょうか? というより、追加したコードは、どのセグメントにあたるのでしょうか? どなたか、ご教授お願いします

  • exeファイルにドラッグすることで動作するプログラム

    現在、exeファイルのアイコンにデータファイルをドラッグすることで、プログラムを動かし、データファイルを読み込んで処理するプログラムをVisualC++2008ExpressEdtionで作成しています。 ここで質問が2つあります。 <質問1>  データファイル名に日本語(2バイトコード)が含まれている場合、CreateFile関数でエラーとなります。ファイル名に日本語を含む場合どのようにすればよいか教えてください。 <質問2>  現在作成しているプログラムでは、処理結果をファイルに出力しています。出力ファイルのフォルダをexeファイルのある場所にしたいのですが、プログラムコード上で相対パスで指定すると、上手く動きません(別フォルダに出力ファイルが作成されます)。ドラッグによってexeファイルを起動する場合、exeファイルのあるフォルダを知るにはどうしたらよいのでしょうか?

  • プログラムの改造

    80386(?)のプログラムを解析しているのですが、アーキテクチャなどについて詳しくわからないので、つまづいております。 やりたいことは、80386のexeファイルに自作のプログラムを追加したいんです。 が、具体的に、exeファイルをどういじれば、可能なのか? 既存のプログラムを上書きするのはできたので、それらをいじる方法ではなく、他のセグメントにジャンプする方法(?)や、またそれらのコードを、どうexeファイルに入れればいいのか(既存のセグメントのデータの後ろに追加するのか、それとも・・・?)。が知りたいのです。 どなたか、ご教授お願い致します。

  • ヘッダファイルimage.hとは?

    image.hを#includeで指定するプログラム例を市販書籍で確認しました。 例) #include "image.h" ヘッダファイルを <>ではなく、""で囲んで指定いることから、自作(標準ではない)のヘッダファイルと思われます。 image.hに関して、今回確認した書籍では説明されていませんので、常識的なファイルなのでしょうか? image.hとは、どういったものなのかご教授お願いいたします。

  • EXEファイルのダウンロード

    WEBサイト上で、例えば壁紙やスクリーンセーバをダウンロードさせようと思うのですがインストーラーでオーサリングするとデータ自体が「.exe」となります。 EXEファイルをダウンロードさせることは一般的に問題ありますでしょうか?

  • EXEファイルのアイコン

    簡単な日記帳を作りました。 完成したので、exeの作成をしましたが、できたexeファイルのアイコンがとても不細工になってしまいました。 フォームのiconプロパティで、16×16サイズのアイコンを設定してまして、それがそのまま使われて32×32に引き伸ばされているようです。 exeファイル用のアイコンは別に設定できると聞きましたが、exeファイルのプロパティというのがどう書いたらいいのかわかりません。 別に設定できるのであれば、32×32用のものも用意して使いたいと思います。 自力で調べるのも勉強のうちと考え、すでに2時間も検索サイトに入り浸ってるのですが・・・(涙) ご存知のかた、どうぞよろしくお願いします!

  • PC-9801 MS-DOSでの実行ファイル形式、COMかEXEか、線引き・基準は?

    PC-9801実機上で、NASMやDJGPP(GCC v4.3.2)を使用しプログラミングを しています。ハードウェア・ソフトウェア(DOS関連)資料も40冊ほど 買い込み、実機も7台揃えて80286/V30~Pentium初代まで互換をもたせるよう がんばっています。 念のためフリーでダウンロードしたBorlandのTurbo C(英語版パッチ済み)と TASM(BCC5.5に同梱)はありますが、まだ入れてません。 箱物の日本語版 PC-98用MASMや日本語版 PC-98用Turbo Cが欲しいんですが、 オクでもめったにないので…(not MASM32。 あれ[MASM32]はライセンス的にヤバいと聞きました)。 さて、質問ですが、標題の件。MS-DOSでは実行ファイル形式として、 COMとEXEがあり、 1)COMはセグメントを気にせずコーディングできる反面、64KBまでの制約があり、 大型のプログラミングには向かない。フルアセンブルのコードが当たり前。 速度重視(極論ですが)。I/Oポートやデバイスを直に叩く、ことが多い。 2)EXE型プログラムは、セグメントを意識しなければならないが、 64KB以上の実行ファイルを生成可能であり、Cとアセンブラオブジェクトとの 連携が可能。Cでのインラインアセンブルも活用できる。構造化。可読性。 可搬性。AVRマイコンのライタなどでもEXEのものがある。 実際にDOSディレクトリ以下を見ますと、いったい何を基準に COMとEXEを使い分けたのか、いまいちつかみかねています。 所有バージョンは日電版 DOS3.3C/3.3D/5.0A/6.2、EPSON版 DOS3.3/6.2ですが、 具体的には日電版 DOS6.2では 1)DISKCOPY.EXE サイズ: 63.1KB 2)ATTRIB.EXE サイズ: 11.2KB 3)MORE.COM サイズ: 2.76KB 4)MEM.EXE サイズ: 32.3KB 5)EDLIN.EXE サイズ: 13.9KB 6)MOVE.EXE サイズ: 18.9KB 7)UNFORMAT.COM サイズ: 24.1KB などです。 C + インラインアセンブラ(もしくはアセンブラオブジェクトと Cオブジェクトとのリンク)ではなく、フルアセンブルであればなおさら 上記実行ファイルは全部.COMにして差し支えないように思えるのですが、 所望の結果がセグメントをまたぐ・またがないに関わることで基準があるのでしょうか (セグメントの概念にいま取り掛かったばかりのヒヨッコですが)。 しかしそれだと、DISKCOPY.COMとか、FreeDOSなどでは.EXEではなく、 .COMになっていたり、その逆もあるので説明がつかないような気もしますが…。 詳しい方、ご教示ください。