プロが教えるわが家の防犯対策術!

ちょっとデコンパイルを、調べたのです。
別の方の質問に、詳しく知らないのに、デコンパイルはそのソフトを作った言語のものでないとダメなのでは?と書いてしまって。
あとで、究極の所CPUへの命令文なので、コンパイル後は同じになるのかなー?と、疑問が。
CPUへの命令を、人にわかりやすくさせたのが、各言語な訳で。

具体的だと、VBやVCとか、Delphiとかで、たとえば、

forループ10回(i = i +1;)

ってあまり、言語に左右されない命令文は、コンパイルしたら、究極の所、同じになりますか?

別の言語でも、デコンパイル(コンパイルしたソフトの中身を解析する)って事はできるのでしょうか?
Delphiで作ったけど、VB系のデコンパイラーでソフトの中身を解析したり。

とんちんかんな事を聞いているかもしれませんが、適当に補完して頂けると幸いです。^^;

A 回答 (4件)

うろ憶えですが, 確か Java は「こう書いたらこのようにコンパイルされる」っていう指針があったような気がします.

    • good
    • 0

コンピュータ科学を学び始めたばかりのものが馬鹿正直に作ったコンパイラやプリミティブなインタプリタならそうなると思うが、商用コンパイラであればそんなのは論外で失格、最適化を行った場合、ループの場所と環境で出てくるコードが違うのは常識ですね。



基本的には最適化のテクノロジーをある程度理解していないと、デコンパイルしたソースをみるのはあまり有意義な行為ではない。
ので、最適化をキーにコンピュータ科学を理解することが一歩かと
    • good
    • 0

http://homepage1.nifty.com/bee/bkey/optimize.html
ここを読むと、書いた順番がちょっと変るだけでも変化する可能性が有る事が判ると思うよ。
    • good
    • 0

>>具体的だと、VBやVCとか、Delphiとかで、たとえば、


forループ10回(i = i +1;)
ってあまり、言語に左右されない命令文は、コンパイルしたら、究極の所、同じになりますか?

言語によってマシン語に展開する方法が違うから同じにならないでしょう。

>>別の言語でも、デコンパイル(コンパイルしたソフトの中身を解析する)って事はできるのでしょうか?
Delphiで作ったけど、VB系のデコンパイラーでソフトの中身を解析したり。

マシン語からディスコンパイラーで、ソースの動きを推測するのは、その言語のコンパイラーの特性を知らないと難しいと思えます。なので、そういう知識があればできるかもしれません。

でも、中間言語に落とすdotNet系の言語はわりとキレイに復元できるそうです。なので、dotNet系では、ソースコードの機密を守るために、中間言語を暗号化したりするそうです。
    • good
    • 0
この回答へのお礼

やっぱり、違いますか。
究極の所マシン語になるのなら、翻訳ソフトの違いだけで、同じになると少しだけ、思ったのですが。

ということは、解析するソフトの開発言語が分からないと、ディスコンパイルするのは、無理って事かな。やっぱり。
ディスコンパイラーっていうんですね。^^;
JAVAもディスコンパイルツールは、結構あるみたいで、中間言語は半熟なので、そういうことなんですかねー。w
ありがとうございます。

お礼日時:2008/02/03 04:02

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!