「逆アセンブラ」の版間の差分

削除された内容 追加された内容
Rei-bot (会話 | 投稿記録)
m robot Adding: hu:Disassembler
Peachberry (会話 | 投稿記録)
19行目:
高級言語は機械語に[[コンパイル]]することによって実行形式を得るが、時として、[[プログラマ]]が意図した高級言語のコーディングと、コンパイラが意図したコンパイル結果が一致しない事がある。また、あまり市場に出回っていないマイナーなコンパイラには[[バグ]]も多いため、時として間違ったコンパイルを行うことがある。このような場合は、コンパイル前のソースコードをいくら眺めてもバグの原因を見極める事は困難であるため、実行コードである機械語を直接検証する必要がある。しかし前述の通り、機械語を人間が直接理解することは困難なので、機械語と一対一で対応するニーモニックに変換して表示する逆アセンブル機能をデバッガが提供している。
 
デバッグシンボル情報が実行形式に付加されている場合は、デバッガは逆アセンブル結果と一緒にソースコードも表示できるため(この機能を持つデバッガを特にシンボリックデバッガ symbolic debugger という)、プログラマがその意味を理解することは比較的易しい。開発中のソフトウェアにはデバッグシンボル情報が付加されているが、デバッグシンボル情報は巨大なファイルであるため、市場にリリースするソフトウェアからは除去するのが普通である。残念ながら除去したデバッグシンボル情報を保管しておく習慣のある開発組織はほとんどない(ソフトウェア開発環境の[[ブラックボックス]]化が進んだため、そもそもデバッグシンボル情報が何かを理解している開発者が少ない)ため、市場で発生したバグを逆アセンブルによって解析することは、時として他人が開発したソフトウェアを逆アセンブルによってリバースエンジニアリングするのと同様の困難を伴う。
 
==関連項目==