たっぴ(パソコン質問掲示板)

ログイン

メニュー
■ トップ
■ 質問する
■ 回答を見る・回答する
■ 参加者のひろば / テーマ別
■ コミュニケーション道場
■ 「たっぴ」の使い方
■ 「たっぴ」のルール・心得

エキスパート トータルランキング
Rank ニックネーム E-Point
1 位 sriver 1372 p
2 位 げんき(^^)/ 810 p
3 位 うにゅ 607 p
4 位 mory 512 p
5 位 saru 510 p
6 位 Clark 481 p
7 位 taknt 474 p
8 位 459 p
9 位 あき◆ 387 p
10 位 おやぢ 366 p
※月間ランキング参加者がありませんでした。



E-Point還元プログラム
E-Point 月間獲得ポイントより回答者様へ現金を還元いたします。

対象還元金額
全員に(E-Point)×20円
支払いは5,000円以上からとなります。
還元金の支払いはご指定銀行口座への振込みとなります。

『マナーの良い質問者』マーク
以下の条件を満たす質問者様には
  『マナーの良い質問者』マーク

が付きます。
  1. 登録していて
  2. 「終了」していない質問がひとつ以下で
  3. 終了した質問で「○○○○○」という言葉の投稿がある
3番目の条件はひらがなです。もうお判りですね。(漢字、カタカナもOKかも。。。)
ぜひマークをGetしてください。









《戻る

No.質問・回答おれい
[80371] コンパイル後の実行ファイル(.exe)は、なぜ異マシンで動作するのでしょうか?
大抵のWindows用ソフトウェアはEXE形式で配布され、ほとんどの場合
Windowsであればそのソフトウェアが使用できます。

つまりEXEはマシン語のはずなのになぜ異なるマシン上で動作するので
しょうか?
私がなにか勘違いをしているのなら、どこを勘違いしているかしている
か教えてください。




r.ogawa (未登録)   2006年4月29日21:51


[80392] EXEにもよりますが、マシン語(ハードウェアの操作やメモリに関する部分)は
Microsoftが提供している共通ライブラリ(.DLLなど)を呼び出して動かしている
アプリがほとんどですので、一般的なアプリケーションはそこまで気を使って
作られてはいないでしょうね。
また、配布されているようなアプリ(.EXE)は作り手側で動くように検証している
から動くと言うことでしょうか。
もちろん共通ライブラリもWindowsのバージョンによって呼び出しの関数に違い
があるのですが、そのあたりもライブラリ側で古いレベルの関数もサポート
してあったり 作り手側が気を使って、Windowsのバージョンに左右されない
関数を使用している場合などさまざまです。

さらに、VBやVC、JAVAなどで作られたアプリはそれぞれのバージョンにあわせて
RunTimeLibralyが用意されてるのはご存知でしょうか。
RunTimeLibraly側でもそういった配慮がなされています。

>私がなにか勘違いをしているのなら、どこを勘違いしているかしている
>か教えてください。
勘違いと言うより勉強不足ですね。
一度生Cで簡単なアプリを作って見るのも一考かと。

はずし太郎 (未登録)   2006年4月30日14:27


[80393] ありがとうございます。
とても参考になりました。

もっとちゃんと勉強してから出直してきます。



r.ogawa (未登録)   2006年4月30日17:39


[80413] まあ、出直さないでも(苦笑)

>つまりEXEはマシン語のはずなのに

ここがまず間違いですね。マシン語ではありません。
Cなり何なりの「コンパイルした後」のバイナリファイルです。

ですので、このファイルはOSが解釈実行します。OSが読み、
実行できるファイルならば、機種とは関係なく動作するのです。

逆に言えば、OSが違う場合、同じマシンでも実行できない
ことがあるわけで、このことを専門的に言ったのが
「はずし太郎」さんの回答になります。
mory (512)    2006年5月1日10:49


[80418] >ここがまず間違いですね。マシン語ではありません。
そうですか?
http://e-words.jp/w/E3839EE382B7E383B3E8AA9E.html

>Cなり何なりの「コンパイルした後」のバイナリファイルです。
このバイナリファイルは基本的には「マシン語」を収めたものです。
(厳密にはマシン語以外に、OSがメモリ上に読み出して実行するためのアドレス情報なども含まれますが)

ご質問の内容については、こちらなどが参考になるかと思われます。
http://oooug.jp/start/open/open01.html

尚、
>マシン語のはずなのになぜ異なるマシン上で動作するのでしょうか?
少し誤解があるようですね。「マシン語」の「マシン」はCPUのことです。
maido (2696)    2006年5月1日12:33


[80420] エミュレーターというのもあります。
Z80というCPUのマシン語を 別の マシン語が 解読して 実行するというものです。

ま、翻訳みたいなもんですが・・・。

ちなみに、Windowsがベースで動いているDOS/Vと呼ばれるものは、
ほとんど同じマシン語ですね。

Macで Windowsを動かす場合は、最初に書いたエミュレーターということを
やっています。

taknt (474)    2006年5月1日14:20


[80448] moryさんmaidoさんtakntさん、ありがとうございました。

http://oooug.jp/start/open/open01.html を早速読んでみます。
みなさん、回答ありがとうございました。



r.ogawa (未登録)   2006年5月2日17:27


( 参照数:2544   日平均:0.4 )
 
〜 回答の受付を終了しました 〜


回答、お礼・報告などメッセージの追加

ニックネーム:

まったく新しい内容の質問、質問者以外の方の質問は、メニューの「質問する」から新たに質問してください。

詳細: 内容を詳しく言うと。。。

※「たっぴ」に登録すると質問にポイントが付けられます。 その他便利な機能も使えます!》新規登録 》Help

※http://.....は自動的にハイパーリンクに変換します。
※<pre></pre>が使用できます。     ※引用は行の先頭に「>」を付けてください。自動的に色が付きます。




利用規約 特定商取引に関する法律に基づく表記 プライバシーポリシー 問合せ