2016-08-19 4 views
0

내가하려는 일 : 사용자 지정 백엔드를 작성하여 LLVM을 사용하는 새로운 대상에 대한 코드를 생성하고 있습니다. MyOwnTargFrameLowering 클래스를 시작하면서 가능한 한 단순하게 유지하려고 노력하고 있습니다.사용자 정의 백엔드를 작성할 때 llvm :: TargetFrameLowering의 모든 기능을 모든 대상에 대해 구현해야합니까?

내 질문 : llvm :: TargetFrameLowering 클래스의 기본 백엔드에 필수적인 방법은 무엇입니까 (생성자 외부에 요구 사항이있는 경우), 최소 사용자 정의를 위해 덮어 써야하는 함수 LLVM 백엔드?

각 대상마다 특정 아키텍처에 대해 덮어 써야 할 기능이 있지만 모든 LLVM에는 항상 필요한 몇 가지 기능이 있다는 것을 알고 있습니다. 특정 LLVM 클래스에는 설명을 구현해야한다는 것을 명시하는 함수가 있다는 사실에서이 아이디어를 모았습니다.

llvm::TargetFrameLowering Class Reference

각 백엔드의 프레임 저하 클래스는 상속 클래스에 대한 참조이며, 기능의 좋은 크기의 목록은 대부분 내가 통해 읽고있는 여기에있다. 내가 말했듯이, 그것이 당신의 아키텍처에 달려 있다는 것을 알고 있지만, 처음에는 신속하게 일을 시작하고 실행할 수 있기 때문에, 최소한의 것이 무엇인지 궁금합니다.

필자는 이미 LLVM에 내장 된 다른 타겟 백엔드를 비교했으며, 생성자 (물론), emitPrologue, emitEpilogue 및 StackSlotSize는 전반적으로 꽤 표준적인 것으로 보입니다. 그러나 이것은 내 부분에 대한 예제로 추측됩니다. 가능성이있는 사람들이 그렇게 기본적인 것을 만들려고 시도했을 가능성이 있다는 것을 이해합니다. 그러나 나는 실제적인 코드를 출력하기 시작하는시기입니다. ;)

올바른 방향의 모든 도움말이나 요령을 알려주세요. 이 질문이 너무 모호하다면 알려주십시오. 이미 답변을 찾는 것보다는 새로운 질문자가되는 것입니다.

답변

0

클래스 참조에서 "pure virtual"키워드를 검색하거나 코드를 살펴보고 함수 선언 다음에 "= 0"을 검색하십시오. 이들은 적어도 파생 클래스에서 구현되어야하는 함수입니다.