10.07.2015 Views

MPLAB® C30 C 编译器用户指南

MPLAB® C30 C 编译器用户指南

MPLAB® C30 C 编译器用户指南

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

MPLAB <strong>C30</strong> C 编 译 器 运 行 时 环 境4.7 存 储 模 型编 译 器 支 持 几 种 存 储 模 型 。 提 供 了 命 令 行 选 项 来 根 据 所 使 用 的 特 定 dsPIC 器 件 和 存 储器 类 型 , 选 择 最 佳 的 存 储 模 型 。表 4-2:存 储 模 型 命 令 行 选 项选 项 存 储 区 定 义 描 述-msmall-data 8 KB 数 据 存 储 区 。这 是 默 认 设 置 。-msmall-scalar 8 KB 的 数 据 存 储 区 。这 是 默 认 设 置 。允 许 使 用 类 PIC18 指 令 访 问 数 据 存 储器 。允 许 使 用 类 PIC18 指 令 访 问 数 据 存 储器 中 的 标 量 。-mlarge-data 大 于 8 KB 的 数 据 存 储 区 。 使 用 数 据 引 用 伪 指 令 。-msmall-code 32 K 字 的 程 序 存 储 区 。这 是 默 认 设 置 。函 数 指 针 不 使 用 跳 转 表 。 函 数 调 用 使用 RCALL 指 令 。-mlarge-code 大 于 32 K 字 的 程 序 存 储 区 。 函 数 指 针 使 用 跳 转 表 。 函 数 调 用 使 用CALL 指 令 。-mconst-in-data 位 于 数 据 存 储 器 中 的 常 量 。 由 启 动 代 码 从 程 序 存 储 器 中 复 制 的 值 。-mconst-in-code 位 于 程 序 存 储 器 中 的 常 量 。这 是 默 认 设 置 。通 过 程 序 空 间 可 视 性 (PSV) 数 据 窗口 访 问 这 些 值 。命 令 行 选 项 适 用 于 所 有 被 编 译 的 模 块 。 各 个 变 量 和 函 数 可 以 声 明 为 near 或 far, 以便 更 好 的 控 制 代 码 的 生 成 。 关 于 设 置 变 量 和 函 数 属 性 的 信 息 , 请 参 阅 第 2.3.1 节 “ 指定 变 量 的 属 性 ” 和 第 2.3.2 节 “ 指 定 函 数 的 属 性 ”。4.7.1 Near 数 据 和 Far 数 据如 果 变 量 分 配 到 near 数 据 段 中 , 通 常 编 译 器 能 生 成 更 好 ( 更 紧 凑 ) 的 代 码 。 如 果 一 个应 用 的 所 有 变 量 能 存 放 在 8KB 的 near 数 据 存 储 区 中 , 那 么 编 译 器 在 编 译 每 个 模 块 时就 会 被 要 求 使 用 默 认 的 -msmall-data 命 令 行 选 项 来 将 这 些 变 量 存 放 在 near 数 据 存储 区 中 。 如 果 标 量 类 型 ( 非 数 组 或 结 构 类 型 ) 所 占 用 的 数 据 总 量 小 于 8 KB 的 话 , 可使 用 默 认 的 -msmall-scalar 选 项 。 这 要 求 编 译 器 仅 将 应 用 中 的 标 量 存 放 在 near 数据 段 中 。如 果 这 些 全 局 选 项 都 不 适 合 , 那 么 就 使 用 下 面 的 可 选 方 案 :1. 可 以 使 用 -mlarge-data 或 -mlarge-scalar 命 令 行 选 项 编 译 应 用 的 某 些 模块 。 在 这 种 情 况 下 , 仅 这 些 模 块 使 用 的 变 量 被 分 配 到 far 数 据 段 中 。 如 果 使 用 这个 可 选 方 案 , 在 使 用 外 部 定 义 的 变 量 时 一 定 要 小 心 。 如 果 使 用 这 两 个 命 令 行 选 项之 一 编 译 的 模 块 使 用 了 一 个 外 部 定 义 的 变 量 , 则 定 义 这 个 变 量 的 模 块 也 要 使 用 相同 的 选 项 编 译 , 或 者 在 变 量 声 明 和 定 义 时 指 定 far 属 性 。© 2005 Microchip Technology Inc. DS51284C_CN 第 65 页

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!