저는 C++로 프로그래밍하고 있으며, 마술 값에 매크로 대신 정적 const 변수를 사용하려고합니다. 이 예에서 : 정적 const 변수를 매크로로
103ec8: e283300a add r3, r3, #10
그러나 I 변수는 여전히 메모리 공간을 차지 참조 :
static const int myx = 10;
int incbyx(int y){
return y + myx;
}
직접 생성되는 어셈블리는 값 10을 이용한다. 나는 --syms 옵션을 objdump를 사용하여이 결론에 도달 : 변수 자체는 참조하지 않기 때문에
001059a8 l O .data 00000004 myx
나는이에 대한 필요성을 볼 수 없습니다. 컴파일러/링커가 데이터 섹션의 공간을 절약하지 않도록 지시 할 수 있습니까? 또는 매크로가 포함되지 않은 다른 제안이 있습니까?
최적화를 사용하여 컴파일 했습니까? –
빌드 또는 릴리스 디버그 또는 릴리스 어떤 최적화 수준? 디버그 빌드가 왜 이런 최적화가 일어날 것으로 예상합니까? –
빠른 응답을 보내 주셔서 감사합니다! 그리고 네, 디버그와 -O0로 컴파일하고있었습니다. 디버그 플래그를 제거하고 O2로 문제가 완전히 사라졌습니다! 멍청한 질문에 대해 유감스럽게 생각합니다! – joseCM