减少 C 语言程序的启动代码 - 2023.2 简体中文

Vitis 统一软件平台文档 嵌入式软件开发 (UG1400)

Document ID
UG1400
Release Date
2023-12-13
Version
2023.2 简体中文
如果应用对于 C 语言程序的代码量具有严格的要求,那么您可以删除所有开销的源代码。本节描述了如何在 C 语言程序中减少调用不必要的 C++ 构造函数或的析构函数代码的开销。您可通过如下方式进行修改来节省约 220 字节的代码空间:
  1. 请按先前章节中所述方式,遵循从安装区域创建启动文件的定制副本的说明进行操作。具体来说,就是复制适合您的应用的特定版本的 crtn.sxcrtinit.s。例如,如果应用执行引导和剖析,请从安装区域复制 crt2.spg-crtinit.s
  2. 修改 pg-crtinit.s,移除以下行:
    brlid r15, __init 
    /* Invoke language initialization functions */
    nop

    brlid r15, __fini 
    /* Invoke language cleanup functions */
    nop

    这样即可避免引用通常进行构造函数和析构函数处理时需要拉取的额外代码,从而减少代码量。

  3. 将这些文件编译到 .o 文件中,并将其置于您所选的目录内,或者将其包含在您的应用源代码中。
  4. 将 -nostartfiles 开关添加到编译器中。如果您选择在特定文件夹内对文件进行汇编,则请添加 -B 目录开关。
  5. 编译您的应用。

如果您的应用以不同方式来执行,那么您必须基于 启动文件 中的描述来选取相应的 CRT 文件。