프로그래머가 작성한 소스 코드를 해석하고, 개발에 사용하고 있는 것과 다른 기종에서 실행할 수 있는 기계어 프로그램을 생성하는 소프트웨어. 소스 코드의 기술에는 대상으로 하는 컴퓨터의 중앙 처리 장치에 내장된 명령어 세트와 일 대 일로 대응하는 어셈블리 언어를 쓰며, 생성한 프로그램은 케이블 따위를 통하여 개발 기종에서 대상 기종으로 전송한 뒤에 실행한다. 기능이나 성능 따위의 문제로 개발 대상 하드웨어에서 소프트웨어를 개발하기 곤란한 경우에 이용한다.
어셈블리어로 작성된 원시 프로그램을 두 번에 걸쳐서 읽어 가면서 번역하는 어셈블러. 전위 참조 문제를 해결하기 위하여 첫 단계에서는 프로그램에서 사용되는 모든 기호들에 대한 정보만을 수집하고, 이러한 정보를 바탕으로 두 번째 단계에서 목적 프로그램 코드를 생성한다. 일반적으로 대부분의 어셈블러에서는 이와 같은 두 단계 작업을 사용한다.
어셈블리어로 작성된 원시 프로그램을 단 한 번만 읽어서 번역하는 어셈블러. 이러한 어셈블러에서는 전위 참조가 문제가 되기 때문에 실제로 구현하기 위해서는 여러 가지 문제점이 따른다. 따라서 이러한 어셈블러를 사용하는 프로그램에서는 반드시 앞에 정의된 레이블만 참조할 수 있도록 하는 제약 조건이 사용되는 경우가 많다.
어셈블리어로 작성된 원시 프로그램을 단 한 번만 읽어서 번역하는 어셈블러. 이러한 어셈블러에서는 전위 참조가 문제가 되기 때문에 실제로 구현하기 위해서는 여러 가지 문제점이 따른다. 따라서 이러한 어셈블러를 사용하는 프로그램에서는 반드시 앞에 정의된 레이블만 참조할 수 있도록 하는 제약 조건이 사용되는 경우가 많다.