人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

アセンブラとは、アセンブリ言語を機械語に翻訳するプログラムということなのですが、機械語をアセンブリ言語に翻訳するプログラムとはあるのでしょうか。アセンブラを逆に動かせばよいのでしょうか。
(機械語とアセンブリ言語は、一対一対応ということですのでできるのかもしれませんけれども)

次のコンパイラですが、高水準言語を、機械語に翻訳するプログラムだ、ということなのですが、機械語をコンパイラに翻訳するプログラムはあるのでしょうか?
(ただ、機械語を高水準語に簡単に戻せるとなると、高水準言語でなんと書かれていたのかが、機械語を入手することで、わかってしまいそうに感じます。)

入門書の冒頭レベルの質問で申し訳ありませんが、どうぞよろしくお願いします。

●質問者: 匿名質問者
●カテゴリ:学習・教育
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● 匿名回答1号

ディスアセンブラ、デコンパイラ、逆コンパイラなどと呼ばれます
https://ja.wikipedia.org/wiki/%E9%80%86%E3%82%A2%E3%82%BB%E3%83%B3%E3%83%96%E3%83%A9
実際は高水準言語から機械語に翻訳する際に最適化などが発生しますので
元のロジックを推測するのは不可能ではありませんがかなりの熟練を要します
日本語→英語→日本語で翻訳をかけた時にまともな文章になるか?と同程度かと


匿名質問者さんのコメント
ありがとうございます。 高水準言語の、コボルやフォートランから、機械語に翻訳して(コンパイラして)、それをまた、コボルやフォートランに戻す(デコンパイラする)場合、まったく同じように戻すとなると、大変なのですね。たしかにそうだと思います。細かい点も触れていただき有難うございました。 せっかくご教示頂いたのに、更に質問するのは恐縮なのですが、 >すると、元のとおりでなくても構わないということであれば、可能ということでしょうか。 >例えば、コボルから翻訳(コンパイラ)により機械語にしたもの、 >これを今度はフォートランに翻訳する(デコンパイラ)のであれば、 > 『元のとおり』という議論はそもそもないわけです。 匿名回答1号様がご多忙であれば、別の方でも良いのですが、念の為、お伺いする次第です。 入門レベルの人間でありながら、変なことを気にするようで申し訳ありません。

匿名回答1号さんのコメント
どなたかの代理質問でしょうか? 元と同じ動作が復元可能といったほうが正しいかもしれません X = 4 と言う翻訳語から、元が X = (1 + 1 + 1 + 1) X = (1 + 3) X = (2 + 2) X = (1 + 4) X = (2 * 2) なのか推察はできませんよね

匿名質問者さんのコメント
匿名1号さま ありがとうございます。 まず、代理質問ではないです。入門レベルの本をキッカケに、ネットで調べたりして、疑問に思ったという次第です。なにか不自然な質問にお感じになったとすれば、申し訳ありません。 頂いた例ですが、「最適化」を説明したもの、と理解しました。 「 X=4 」 が最も単純な表現であり、即ち、最適なもの。 もともとの高水準言語において、 各プログラマーは様々にコーディングしているかもしれませんが、 コンパイラすると、最適な「 X=4 」に、帰着する、ということだと理解しました。 つまり、 > X = (1 + 1 + 1 + 1) 、X = (1 + 3) 、X = (2 + 2)、、、 などを > デコンパイラにより復元するので。復元されたうちのどれかには、該当する筈である。 そして、 >その復元されたものを、改めて、コンパイラすれば、『同じ動作』ができる。 ということだと理解しました。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ