.map 및 .lst 파일에서 '(+ 304 bytes shared)'란 무엇입니까?
기술노트 29512
아키텍처:
430, AVR, AVR32, 8051, M16C, M32C, R32C, CF, CR16C, H8, HCS12, MAXQ, S08, SAM8, V850
컴포넌트:
linker
업데이트:
2021-06-30 오전 3:42
소개
생성된 바이트 양에 대한 정보가 수집되어 표시됩니다. 여전히 이 정보의 일부는 해독하기 어려울 수 있습니다. 이 기술 노트는 '공유 바이트'에 초점을 맞춥니다. (IAR ILINK Linker™를 사용하는 제품은 이 기술 노트에서 다루지 않습니다.)
세부사항
각 메모리의 함수 및 데이터에 대해 생성된 바이트 양에 대한 정보는 stdout으로 이동하여 화면에 표시됩니다. 일부 바이트가 공유된 것으로 보고될 수 있습니다. 아래의 예와 자세한 정보를 참조하십시오.
예제
---calendar.lst-------------------------------------------------------------
5 646 bytes of CODE memory (+ 304 bytes shared)
656 bytes of CONST memory
288 bytes of DATA memory
Errors: none
Warnings: none
---calendar.s**-------------------------------------------------------------
PUBWEAK `?*?DATA_ID`
MULTWEAK ??BKP_DeInit??rT
MULTWEAK ??BKP_ReadBackupRegister??rT
MULTWEAK ??BKP_WriteBackupRegister??rT
---STM32F10x_Demo.map-------------------------------------------------------
DATA_ID
Segment part 87. NOT NEEDED.
ENTRY ADDRESS REF BY
===== ======= ======
?*?DATA_ID
----------------------------------------------------------------------------
위의 예에는 *.lst 파일 및 stdout에 표시된 대로 공유된 304바이트가 있습니다. PUBWEAK 및 MULTWEAK가 있는 어셈블리 파일 *.s** 항목을 보면 공유가 표시된 항목이 표시됩니다. 마지막으로 *.map 파일에도 NOT NEED로 항목이 표시됩니다.
다음 옵션을 활성화하여 정보를 얻기
- IAR Embedded Workbench IDE > Project > Options... > C/C++ Compiler > List > select 'Output assembler file'
- IAR Embedded Workbench IDE > Project > Options... > Linker > List > select 'Include suppressed entries'
.\Release\List\*.map 생성하기
- IAR Embedded Workbench IDE > Project > Options... > Category: Linker > Diagnostics > select 'Always generate output'
- IAR Embedded Workbench IDE > Project > Options... > Category: Linker > List > select 'Generate linker listing' and 'Module summary'
stdout에 사용되는 크기와 커맨드라인 확인
- IAR Embedded Workbench IDE > Tools > Options... > IDE Options > Messages > Show build messages > select 'All'
컴파일러에서 추가 디버그 정보 확인
- IAR Embedded Workbench IDE > Project > Options... > C/C++ Compiler > List > select 'Output list file' and 'Diagnostics'
- IAR Embedded Workbench IDE > Project > Options... > C/C++ Compiler > Diagnostics > select 'Enable remarks'
자세한 정보
공유 오브젝트는 모듈 간에 공유되는 기능 또는 데이터 오브젝트입니다. 둘 이상의 모듈에서 이러한 현상이 발생할 경우 사본 하나만 보존됩니다. 예를 들어 인라인 기능이 인라인화되지 않은 경우도 있습니다. 즉, 각 기능의 인스턴스가 최종 애플리케이션에 하나만 포함되기 때문에 인라인 기능이 공유된 것으로 표시됩니다. 이 메커니즘은 특정 함수 또는 변수와 직접 관련되지 않은 컴파일러 생성 코드 또는 데이터, 그리고 최종 애플리케이션에 인스턴스가 하나만 필요한 경우에도 사용됩니다.
모든 제품 이름은 해당 소유자의 상표 또는 등록 상표입니다.