ID非公開

2021/12/6 1:39

44回答

なぜc言語で書かれたコードを機械語に変換して

ベストアンサー

3

3人がナイス!しています

その他の回答(3件)

0

可逆性がないからです。 そもそもアセンブリ言語は機械語を「記号で表したもの」です。だから、アセンブリ言語と機械語だけは相互変換が可能なのです。

0

一番大きな理由はコンパイラによる「最適化」で、ソースコードに書かれたままじゃなくなると言うものでしょうね。 また、forなどと言う機械語はないので、ジャンプ命令になどに置き換わる訳ですが、whileやgotoなんかも似たような形になるでしょうから、元が何だったかは機械語からは判明しません。 他にも、変数名・関数名などは機械語になると意味をなさない、もしくは冗長なので短縮名に変換されるなどで、元の情報が完全に無くなります。

1

そりゃそうでしょ機械語に一対一はアセンブラだけですから。 アドレスの連続エリアを別々の変数とするか配列とみなすか分からないしメモリアドレスの一ビットシフトも単純にシフト指示なのか2倍計算なのか機械語からは読めません。

1人がナイス!しています