2014-11-09 2 views
-1

나는 완전히이 질문에 갇혔다. 나는 5에서 10 변수 만이 데이터 유형을 가지고 선언 할 수 있다고 들었다. 내가 얼마나 많은 데이터 유형 변수을 등록 알고 싶습니다 declare.it 것 같습니다 꽤 보입니다. 그러나 우리가 프로그램을 실행하는 동안 필요한 이해 수준. 그렇지 않으면 실행시 사전에 답변을 주셔서 감사합니다.은 레지스터 데이터 유형 변수가 제한되어 있습니까?

1) .is 레지스터 (데이터 유형)는 다른 유형의 컴파일러/시스템에 따라 다릅니다.
2). 많은 레지스터 데이터 유형 변수를 선택할 수 있습니까?
3).이 모든 레지스터는 무엇입니까? (저는 CPU reg, 메모리 reg, 범용 reg입니까?)

답변

2

register 더 이상 최근의 C optimizing compiler (GCC 또는 Clang/LLVM의 예를 들어, 최신 버전)에 의해 컴파일 된 C 프로그램에 유용한 키워드입니다 더 나은 일을 할 것.

오늘날, 단순히 (registerconst 또는 volatile 같은 규정이없는 데이터 유형 int처럼되는 것을 알) register 같은 가변 정규화가 & 단항 연산자 어드레스 중 피연산자 수 없다는 것을 의미한다.

1990 년에 register은 컴파일러의 중요한 키워드였습니다.

컴파일러 (최적화 할 때)는 register allocation 및 유출에 대해 매우 잘합니다.

예를 들어 좋아하는 C 함수를 컴파일 해 봅니다. gcc -Wall -O2 -fverbose-asm -S; 당신은 조립 파일에 .s 접미사가 붙을 것이고 내부를 들여다 볼 수 있습니다. 컴파일러는 레지스터 할당에 대해 꽤 잘하고 있습니다.

explicit registers에 몇 가지 글로벌 (또는 로컬) 변수를 넣으려면 GCC가 extensions 언어를 제공합니다. 이것은 거의 유용하지 않으며 타겟 프로세서 및 ABI에만 해당됩니다.

데스크톱이나 랩톱 프로세서의 경우 CPU cache은 레지스터보다 훨씬 중요합니다 (this answer의 참조 및 힌트 참조).

0

레지스터를 사용하지 마십시오. optomizer는

1

CPU registers에는 명시 적으로 변수를 정의 할 수있는 방법이 없습니다. 컴파일러에 register 지정자를 간략하게 암시 할 수도 있지만 요즘 컴파일러가 레지스터 할당을 담당하는 sophisticated optimizer을 가지고 있기 때문에 요점은 없습니다.

관련 문제