UEFI EDK2 Bios 소스에서 작업 중입니다. 우리는 EDK2 소스에 플랫폼 관련 새 패키지를 만들었습니다. 플랫폼 관련 코드에 우리가 추가 한 이상한 문제가 있습니다.C 파일의 로컬 변수가 GCC 컴파일 코드 인 스택에 생성되지 않습니다.
내가 소스 레벨 디버깅을했을 때, C 함수의 로컬 변수가 GCC로 컴파일 될 때 스택에 생성되지 않는다는 것을 알았습니다.
Visual Studio로 컴파일 할 때 동일한 UEFI 코드를 사용하면 C 함수의 지역 변수가 스택에 생성됩니다.
내가 스택 자료, 모든 세그먼트 레지스터, 현재 실행 코드, 메모리 등을 볼 수있는 시뮬레이션 환경에서이 코드를 실행하고 ..
자사의 멀티 코어 시스템 만 사용할 수 만 부트 스트랩 프로세서
아마도 GCC는 변수를 레지스터에 넣거나 사용하지 않았기 때문에이를 최적화했습니다. 왜 이것이 문제인지 설명하지 못하고 (물론 코드를 보여 주지도 않습니다). – unwind
최적화 문제 일 수 있습니까? 그리고 지역 변수 (a.k.a. * 자동 변수 *)는 * 스택에 *있을 필요가 없습니다. –