GCC 소스 코드를 검색해 보면 다음과 같은 내용이 보입니다.
BT
내 목표는 GCC가 , BTS
, BTR
를 생성하는지 여부에 관계없이 스스로 답을 찾는 것입니다 BTC
. 위의 항목을 시작 BT
하고 찾았지만 해당 항목이 어디에 사용되는지 찾을 수 없습니다. GCC는 명령어를 생성합니까 BT
?
이 버그 보고서에서이제 해결됐으니 이제 해결됐네요그런데 이 명령은 어디에 표시되나요?
답변1
이 상수는 i386 기계 정의 파일에서 사용됩니다 gcc/config/i386/i386.md
.핵심 지시문 자체는 여기에 정의되어 있습니다., 또한 다음과 같은 다양한 조합을 정의합니다.이것AND
BTR
.
기계 정의를 사용하는 방법을 알아보려면 다음을 참조하세요.해당 매뉴얼.개요다음 요약을 제공하십시오.
컴파일러에서는 세 가지 주요 변환이 발생합니다.
- 프런트 엔드는 소스 코드를 읽고 구문 분석 트리를 구축합니다.
- 구문 분석 트리는 명명된 명령어 패턴을 기반으로 RTL insn 목록을 생성하는 데 사용됩니다.
- insn 목록은 RTL 템플릿과 일치하여 어셈블리 코드를 생성합니다.
명령어 정의는 두 번째 변환에서 RTL 명령어를 생성하고 세 번째 변환에서 결과 어셈블리 코드를 생성하는 데 사용됩니다.
BT 실행 지침을 보려면:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char **argv) {
if (argc > 2) {
int x = atoi(argv[1]);
int n = atoi(argv[2]);
if (x & (1 << n)) {
printf("Set");
}
}
}
을 사용하면 -O2
GCC btl
7.3.1이 생성됩니다.