컴퓨터는 오직 0과 1의 숫자만 이해할 수 있다. 그럼에도 숫자 뿐만 아니라 글자, 사진, 영상, 소리 등 다양한 데이터들을 표현한다. 이는 컴퓨터가 입력받은 것을 출력하는 과정 사이에 컴퓨터 과학이라는 문제 해결 과정이 존재하기 때문이다.
우리가 사용하는 프로그래밍 언어로 작성한 코드를 소스 코드라 하는데, 이를 컴퓨터가 이해할 수 있는 2진법으로 작성된 머신 코드로 바꾸기 위해서는 소스코드를 머신코드로 변환시켜주는 역할이 필요하다. 이러한 일을 수행하는 프로그램을 컴파일러라 한다.
컴파일 단계는 전처리, 컴파일링, 어셈블링, 링킹의 네 단계를 거쳐 이루어진다.컴파일의 전체 과정 중 첫번째 단계로, C에서 전처리기가 소스 코드를 생성하면 그 다음엔 컴파일러가 소스 코드를 어셈블리 언어로 컴파일한다.어셈블리 언어로 변환된 코드를 오브젝트 코드로 변환