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> 用 户 指 南-fflag 形 式 的 选 项 指 定 依 赖 于 机 器 的 标 志 。 大 多 数 标 志 有 正 的 形 式 和 负 的 形 式 ;-ffoo 的 负 的 形 式 为 -fno-foo。 在 下 表 中 , 仅 列 出 了 一 种 形 式 ( 非 默 认 的 形 式 )。表 3-10:选 项-fforce-mem-finline-functions-finline-limit=n独 立 于 机 器 的 优 化 选 项-fkeep-inline-functions-fkeep-static-consts-fno-function-cse定 义在 对 存 储 器 操 作 数 进 行 算 术 运 算 之 前 , 强 制 将 存 储 器 操 作数 复 制 到 寄 存 器 中 。 这 样 通 过 使 所 有 存 储 器 引 用 可 能 的 公共 子 表 达 式 , 可 生 成 更 好 的 代 码 。 当 它 们 不 是 公 共 子 表 达式 时 , 指 令 组 合 应 该 删 除 单 独 的 寄 存 器 装 载 。 -O2 开 启 这个 选 项 。将 所 有 简 单 的 函 数 合 并 到 其 调 用 函 数 中 。 编 译 器 直 观 地 决定 哪 些 函 数 足 够 简 单 值 得 这 样 合 并 。 如 果 合 并 了 对 某 个 给定 函 数 的 所 有 调 用 , 且 函 数 声 明 为 static, 则 通 常 该 函数 本 身 不 作 为 汇 编 代 码 输 出 。默 认 情 况 下 , MPLAB <strong>C30</strong> 限 制 可 内 联 的 函 数 的 大 小 。 这个 选 项 允 许 控 制 显 式 声 明 为 inline 的 函 数 ( 即 用 inline关 键 字 标 记 的 函 数 ) 的 这 一 限 制 。 n 是 可 内 联 的 函 数 的 大小 , 以 虚 拟 指 令 的 条 数 为 单 位 ( 参 数 处 理 不 包 括 在 内 )。n 的 默 认 值 为 10000。 增 加 这 个 值 可 能 导 致 被 内 联 的 代 码更 多 , 并 可 能 增 加 编 译 时 间 和 存 储 器 开 销 。减 小 这 个 值 通 常 使 编 译 更 快 , 更 少 的 代 码 被 内 联 ( 可 能 程序 执 行 速 度 变 慢 )。 这 一 选 项 对 于 使 用 内 联 的 程 序 尤 其 有用 。注 : 在 这 里 , 虚 拟 指 令 代 表 函 数 大 小 的 抽 象 测 量 。 它 不 代表 汇 编 指 令 条 数 , 同 样 对 于 不 同 版 本 的 编 译 器 , 它 的 确 切含 义 可 能 会 有 所 不 同 。即 使 合 并 了 对 一 个 给 定 函 数 的 所 有 调 用 , 且 函 数 声 明 为static, 输 出 函 数 的 一 个 独 立 的 运 行 时 可 调 用 形 式 。 这个 选 项 不 影 响 extern 内 联 函 数 。当 没 有 开 启 优 化 时 , 发 出 声 明 为 static const 的 变 量 , 即使 变 量 没 有 被 引 用 。MPLAB <strong>C30</strong> 默 认 使 能 这 个 选 项 。 如 果 需 要 强 制 编 译 器 检查 是 否 引 用 了 这 个 变 量 , 而 不 管 是 否 开 启 了 优 化 , 使 用-fno-keep-static-consts 选 项 。不 要 将 函 数 的 地 址 存 放 在 寄 存 器 中 ; 使 调 用 constant 函 数的 每 条 指 令 显 式 包 含 函 数 的 地 址 。这 个 选 项 导 致 生 成 的 代 码 效 率 不 高 , 但 对 于 某 些 企 图 修 改程 序 的 人 来 说 , 会 对 不 使 用 这 个 选 项 而 生 成 的 优 化 程 序 感到 束 手 无 策 。DS51284C_CN 第 46 页© 2005 Microchip Technology Inc.

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

Saved successfully!

Ooh no, something went wrong!