최근에 저는 리눅스 플랫폼에서 간단한 컴파일러를 직접 작성하려고했습니다.libelf 또는 다른 라이브러리를 사용하지 않고 ELF 바이너리 만들기
컴파일러의 백엔드에 관해서는 libelf
과 같은 써드 파티 라이브러리를 사용하지 않고 ELF 형식의 바이너리를 생성하기로 결정했습니다.
나는 대신 write()
함수를 사용하고 ELF 파일의 모든 세부 사항을 제어함으로써 ELF ABI에 상응하는 파일에 기계어 코드를 직접 작성하려고합니다.
이 방법의 장점은 제 컴파일러의 모든 것을 제어 할 수 있다는 것입니다.
그러나 나는 주저합니다. ELF ABI가 얼마나 상세했는지 고려하면 가능한가?
유용한 정보를 얻을 수있는 유용한 정보가 있으면 알려주십시오.
아 그래, 옛날은 "나는 그때 피어 심사되어있어 하나의 오류에 대해 걱정할 필요가 없기 때문에, 내 자신의 백과 사전을 작성하고자하는, 수천명의 사람들이 교정 해 - 나는 그것을 더 잘할 수있다 "고 주장한다. –
@Marc - 프로덕션 소프트웨어의 경우 완전히 동의합니다. 그러나 컴파일러 작성법에 대해 배우기 위해 이미 독자적인 컴파일러를 작성하고 있다면 코드 생성과 출력을 직접 해보십시오. 매우 흥미로운 학습 경험이 될 수 있습니다. – QuantumMechanic
그것은 컴파일러가 아니라 링커의 역할입니다. –