역어셈블러: 두 판 사이의 차이

내용 삭제됨 내용 추가됨
잔글편집 요약 없음
편집 요약 없음
1번째 줄:
'''역어셈블러''' 또는 '''디스어셈블러'''({{lang|en|disassembler}})는 [[기계어]]를 [[어셈블리어]]로 변환하는 [[컴퓨터 프로그램]]이다. 역어셈블러는 어셈블리어가 아닌 [[고급 프로그래밍 언어]]를 대상으로 하는 [[역컴파일러]]와는 구분한다. 역어셈블러의 출력물인 디스어셈블리(disassembly)는 어셈블러로의 입력에 맞추는 것보다 사람이 읽기 쉽도록 형식을 정하는 경우가 있는데, 이것이 바로 [[리버스 엔지니어링]] 도구의 역할이다.
 
어셈블리어 소스 코드는 보통 [[constant상수 (컴퓨터 프로그래밍)|상수]]와 프로그래머의 주석을 허용한다. 이것들은 [[기계어]]로 변환되는 과정에서 어셈블러에 의해 제거된다. 그렇기 때문에 역어셈블리는 원본 소스 코드보다는 사람이 해석하기 어려워 진다. 몇몇 역어셈블러들은 [[ELF 파일 형식]]의 오브젝트 파일에 존재하는 [[기호 디버깅]](Symbolic Debugging) 정보를 사용한다. [[IDA Pro]]는 사용자에게 값이나 코드의 영역을 위한 연상 기호를 사용할 수 있게 함으로써 사용자의 이해를 역어셈블 과정에 적용할 수 있게 한다.
 
역어셈블리는 정확한 과학이 아니다. [[CISC]] 플랫폼에서는 가변적인 명령어들이나 [[자체 수정 코드]]의 존재로 인해서 한 프로그램이 여러 타당한 역어셈블리로 만들어질 수 있는 것이다.