오브젝트 코드2 [C언어]어셈블(Assemble) 단계 어셈블이란? 전처리와 컴파일을 거쳐서 나온 어셈블리어 코드를 이용해서 어셈블단계에 대해서 설명해 보도록 하겠다. 어셈블 단계에서는 어셈블러가 담당을 하고 그 결과로 오브젝트 코드가 나오게 된다. 기계어와 1:1 대응이 되는 어셈블리어 코드를 어셈블러가 오브젝트 코드로 변환을 시키는데 이 오브젝트 코드가 이제야 기계가 읽을 수 있는 언어인 이진코드, 기계어로 변환이 된다. 오브젝트 코드 기계가 곧바로 이해가 가능한 기계코드로 이진코드(binary code)로 되어있다. 하지만 어셈블단계에서 입력을 받을 때 구멍이 뚫린 어셈블리어 코드를 받았기 때문에 오브젝트 코드도 아직까지는 구멍이 메꿔지지 않았다. 그 구멍을 메꾸는 것은 링커가 해준다. 오브젝트 코드 보는 방법(.o) (Clang 기준) -c 플래그를 .. 2023. 2. 16. [C언어]C프로그램 빌드 과정(컴파일,링크,빌드의 차이) 빌드(build)란? 빌드의 뜻은 소스코드를 기계가 이해할 수 있는 기계어로 변환해 주는 과정으로 명령어를 모두 모아서 실행 가능한 실행파일로 만드는 과정으로 세부적으로 나누면 4가지로 나뉘어진다. 전처리(Preprocessing) 컴파일(Compilation) 어셈블(Assembling) 링크(Linking) 빌드안에 컴파일이랑 링크가 속해있는 것으로 보면 된다. 사람마다 전처리,컴파일,어셈블전체를 컴파일로 불러서 빌드 단계를 두 단계로 보는 경우도 있다. 컴파일 링크 컴파일(Compile)이란? 컴파일러가 전처리기가 처리해준 소스 코드를 이용해서 어셈블리어로 바꿔주는 과정을 말한다. 어셈블리어는 기계어와 1:1로 대응이 되는 언어로 하드웨어에 가까운 언어이다. 어셈블리어를 기계어라고 부르기에는 조금 .. 2023. 2. 15. 이전 1 다음