.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'

자세한 정보

공유 오브젝트는 모듈 간에 공유되는 기능 또는 데이터 오브젝트입니다. 둘 이상의 모듈에서 이러한 현상이 발생할 경우 사본 하나만 보존됩니다. 예를 들어 인라인 기능이 인라인화되지 않은 경우도 있습니다. 즉, 각 기능의 인스턴스가 최종 애플리케이션에 하나만 포함되기 때문에 인라인 기능이 공유된 것으로 표시됩니다. 이 메커니즘은 특정 함수 또는 변수와 직접 관련되지 않은 컴파일러 생성 코드 또는 데이터, 그리고 최종 애플리케이션에 인스턴스가 하나만 필요한 경우에도 사용됩니다.

 

모든 제품 이름은 해당 소유자의 상표 또는 등록 상표입니다.

죄송하지만, 당사 사이트에서는 Internet Explorer를 지원하지 않습니다.보다 편안한 사이트를 위해 Chrome, Edge, Firefox 등과 같은 최신 브라우저를 사용해 주시길 부탁드립니다.