아시다시피, 컴파일러는 연속적인 대형 스위치 코드 블록, C++ 용 가상 함수 테이블 및 일부 꼬리 호출 상황에서 간접 점프를 생성합니다. 또한 함수에 대한 포인터에 대한 간접 호출 (점프가 아님). 간접 점프를 사용하는 다른 모든 상황?컴파일러는 언제 C 언어로 x86_64에 대한 간접 점프를 생성합니까? 컴파일러에게 간접 점프가 발생하지 않도록 할 수 있습니까?
또한 컴파일러 (clang/llvm preferred)에게 필요한 경우가 아니면 간접 호출을 생성하지 않도록 지정할 수 있습니까?
나는 이것에 대한 연구를하고 있기 때문에 이상한 질문 일 수 있습니다.
간접 점프 사용은 * 절대로 * 필요 없습니다. 핀치 (pinch)에서는 타겟 어드레스를 푸시 (push)하고 나서 복귀 (return)하는 것으로 대체 할 수있다. 어쨌든 비효율적입니다. – Deduplicator
직접 점프 또는 달리기 전에 결정될 수있는 것으로 대체 할 수있는 방법은 무엇입니까? – WindChaser