(機械語とアセンブリ言語は、一対一対応ということですのでできるのかもしれませんけれども)
次のコンパイラですが、高水準言語を、機械語に翻訳するプログラムだ、ということなのですが、機械語をコンパイラに翻訳するプログラムはあるのでしょうか?
(ただ、機械語を高水準語に簡単に戻せるとなると、高水準言語でなんと書かれていたのかが、機械語を入手することで、わかってしまいそうに感じます。)
入門書の冒頭レベルの質問で申し訳ありませんが、どうぞよろしくお願いします。
ディスアセンブラ、デコンパイラ、逆コンパイラなどと呼ばれます
https://ja.wikipedia.org/wiki/%E9%80%86%E3%82%A2%E3%82%BB%E3%83%B3%E3%83%96%E3%83%A9
実際は高水準言語から機械語に翻訳する際に最適化などが発生しますので
元のロジックを推測するのは不可能ではありませんがかなりの熟練を要します
日本語→英語→日本語で翻訳をかけた時にまともな文章になるか?と同程度かと
どなたかの代理質問でしょうか?
2019/02/19 03:54:42元と同じ動作が復元可能といったほうが正しいかもしれません
X = 4
と言う翻訳語から、元が
X = (1 + 1 + 1 + 1)
X = (1 + 3)
X = (2 + 2)
X = (1 + 4)
X = (2 * 2)
なのか推察はできませんよね
匿名1号さま ありがとうございます。
2019/02/20 00:12:27まず、代理質問ではないです。入門レベルの本をキッカケに、ネットで調べたりして、疑問に思ったという次第です。なにか不自然な質問にお感じになったとすれば、申し訳ありません。
頂いた例ですが、「最適化」を説明したもの、と理解しました。
「 X=4 」 が最も単純な表現であり、即ち、最適なもの。
もともとの高水準言語において、
各プログラマーは様々にコーディングしているかもしれませんが、
コンパイラすると、最適な「 X=4 」に、帰着する、ということだと理解しました。
つまり、
> X = (1 + 1 + 1 + 1) 、X = (1 + 3) 、X = (2 + 2)、、、 などを
> デコンパイラにより復元するので。復元されたうちのどれかには、該当する筈である。
そして、
>その復元されたものを、改めて、コンパイラすれば、『同じ動作』ができる。
ということだと理解しました。