MPLAB® C30 C ç¼è¯å¨ç¨æ·æå
MPLAB® C30 C ç¼è¯å¨ç¨æ·æå MPLAB® C30 C ç¼è¯å¨ç¨æ·æå
MPLAB ® C30 用 户 指 南2. 如 果 使 用 了 -mlarge-data 或 -mlarge-scalar 命 令 行 选 项 , 那 么 可 通 过 指 定near 属 性 将 变 量 排 除 在 far 数 据 空 间 外 ( 即 存 放 在 near 数 据 空 间 )。3. 命 令 行 选 项 的 作 用 域 仅 限 于 模 块 内 部 , 也 可 以 不 使 用 命 令 行 选 项 , 而 通 过 指 定far 属 性 将 变 量 存 放 在 far 数 据 段 中 。如 果 应 用 的 near 变 量 在 8K 的 near 数 据 空 间 中 存 放 不 下 , 链 接 器 将 产 生 错 误 消 息 。4.7.2 Near 代 码 和 Far 代 码具 有 near 属 性 的 函 数 ( 函 数 在 彼 此 的 32K 字 范 围 内 ) 互 相 调 用 时 比 非 near 属 性 的 函数 效 率 高 。 如 果 已 知 应 用 程 序 中 的 所 有 函 数 都 是 near 的 , 那 么 在 编 译 每 个 模 块 时 就 可以 使 用 默 认 的 -msmall-code 命 令 行 选 项 来 指 示 编 译 器 采 用 更 高 效 的 函 数 调 用 形 式 。如 果 这 个 默 认 的 选 项 不 适 合 , 可 以 使 用 下 面 的 可 选 方 案 :1. 可 以 使 用 -msmall-code 命 令 行 选 项 来 编 译 应 用 程 序 的 某 些 模 块 。 在 这 种 情 况下 , 只 有 这 些 模 块 中 的 函 数 调 用 可 以 采 用 更 高 效 的 函 数 调 用 形 式 。2. 如 果 已 使 用 -msmall-code 命 令 行 选 项 , 那 么 编 译 器 可 能 被 指 示 对 具 有 far 属 性的 函 数 使 用 长 函 数 调 用 形 式 。3. 命 令 行 选 项 的 作 用 域 限 于 模 块 内 部 , 可 以 不 使 用 命 令 行 选 项 , 而 通 过 在 函 数 的 定义 和 声 明 中 指 定 near 属 性 , 指 示 编 译 器 使 用 更 高 效 的 函 数 调 用 形 式 调 用 这 些 函数 。-msmall-code 命 令 行 选 项 与 -msmall-data 命 令 行 选 项 的 区 别 在 于 , 采 用 前 者时 , 为 确 保 函 数 彼 此 “ 靠 近 ” 分 配 , 编 译 器 不 需 进 行 特 别 的 操 作 ; 而 采 用 后 者 时 , 编译 器 要 将 变 量 分 配 到 特 殊 的 段 中 。如 果 函 数 声 明 为 near, 而 其 调 用 函 数 无 法 采 用 函 数 调 用 的 更 高 效 形 式 调 用 它 时 , 链 接器 将 产 生 错 误 信 息 。DS51284C_CN 第 66 页© 2005 Microchip Technology Inc.
MPLAB C30 C 编 译 器 运 行 时 环 境4.8 定 位 代 码 和 数 据正 如 第 4.4 节 “ 代 码 段 和 数 据 段 ” 中 所 述 , 编 译 器 将 代 码 存 放 在 .text 段 中 , 而 根 据所 使 用 的 存 储 模 型 和 数 据 是 否 已 初 始 化 将 数 据 存 放 在 指 定 的 段 中 。 链 接 模 块 时 , 链 接器 根 据 各 个 段 的 属 性 来 确 定 段 的 起 始 地 址 。某 些 情 况 下 必 须 将 特 定 函 数 或 变 量 存 放 在 某 个 特 定 地 址 或 某 个 地 址 范 围 。 为 实 现 这 一点 , 最 简 单 的 方 法 是 使 用 address 属 性 , 如 第 2.3 节 “ 关 键 字 差 别 ” 所 述 。 例 如 ,将 函 数 存 放 到 程 序 存 储 器 的 地 址 0x8000 中 :int __attribute__ ((address(0x8000))) PrintString (const char *s);同 样 , 将 变 量 Mabonga 存 放 到 数 据 存 储 器 的 地 址 0x1000 中 :int __attribute__ ((address(0x1000))) Mabonga = 1;定 位 代 码 和 数 据 的 另 一 种 方 法 是 将 函 数 或 变 量 存 放 到 用 户 定 义 的 段 中 , 并 在 自 定 义 的链 接 描 述 文 件 中 指 定 该 段 的 起 始 地 址 。 具 体 如 下 :1. 在 C 源 程 序 中 修 改 代 码 或 数 据 的 声 明 来 指 定 用 户 定 义 的 段 。2. 将 这 个 用 户 定 义 段 加 入 到 一 个 自 定 义 的 链 接 描 述 文 件 中 来 指 定 段 的 起 始 地 址 。例 如 , 要 将 函 数 PrintString 存 放 到 程 序 存 储 器 的 0x8000 地 址 中 , 首 先 要 在 C 源程 序 中 对 函 数 进 行 如 下 声 明 :int __attribute__((__section__(".myTextSection")))PrintString(const char *s);段 属 性 指 定 将 函 数 存 放 到 名 为 .myTextSection 的 段 中 , 而 不 是 默 认 的 .text 段中 。 它 没 有 指 定 用 户 定 义 的 段 存 存 放 在 哪 里 。 这 必 须 在 一 个 自 定 义 的 链 接 描 述 文 件 中指 定 , 如 下 所 示 。 以 针 对 器 件 的 链 接 描 述 文 件 为 基 础 , 加 入 如 下 段 定 义 :.myTextSection 0x8000 :{*(.myTextSection);} >program这 指 定 了 输 出 文 件 应 包 括 一 个 名 为 .myTextSection 的 段 , 这 个 段 位 于 地 址0x8000, 包 含 所 有 名 为 .myTextSection 的 输 入 段 。 由 于 在 本 例 中 , 在 该 段 中 只 有一 个 函 数 PrintString, 那 么 这 个 函 数 将 位 于 程 序 存 储 器 的 地 址 0x8000 处 。类 似 地 , 要 将 变 量 Mabonga 存 放 到 数 据 存 储 器 的 地 址 0x1000 中 , 首 先 要 在 C 源 程 序中 声 明 该 变 量 如 下 :int __attribute__((__section__(".myDataSection"))) Mabonga = 1;© 2005 Microchip Technology Inc. DS51284C_CN 第 67 页
- Page 21 and 22: MPLAB C30 与 ANSI C 的 差 别pac
- Page 23 and 24: MPLAB C30 与 ANSI C 的 差 别psv
- Page 25 and 26: MPLAB C30 与 ANSI C 的 差 别2.3
- Page 27 and 28: MPLAB C30 与 ANSI C 的 差 别for
- Page 29 and 30: MPLAB C30 与 ANSI C 的 差 别为
- Page 31 and 32: MPLAB C30 与 ANSI C 的 差 别一
- Page 33 and 34: MPLAB C30 与 ANSI C 的 差 别2.4
- Page 35 and 36: 第 3 章 使 用 MPLAB C30 C 编
- Page 37 and 38: 使 用 MPLAB C30 C 编 译 器3.5.
- Page 39 and 40: 使 用 MPLAB C30 C 编 译 器3.5.
- Page 41 and 42: 使 用 MPLAB C30 C 编 译 器3.5.
- Page 43 and 44: 使 用 MPLAB C30 C 编 译 器表
- Page 45 and 46: 使 用 MPLAB C30 C 编 译 器表
- Page 47 and 48: 使 用 MPLAB C30 C 编 译 器表
- Page 49 and 50: 使 用 MPLAB C30 C 编 译 器下
- Page 51 and 52: 使 用 MPLAB C30 C 编 译 器表
- Page 53 and 54: 使 用 MPLAB C30 C 编 译 器表
- Page 55 and 56: 使 用 MPLAB C30 C 编 译 器表
- Page 57 and 58: 使 用 MPLAB C30 C 编 译 器3.5.
- Page 59 and 60: 使 用 MPLAB C30 C 编 译 器3.5.
- Page 61 and 62: 使 用 MPLAB C30 C 编 译 器3.6
- Page 63 and 64: 使 用 MPLAB C30 C 编 译 器下
- Page 65 and 66: 第 4 章 MPLAB C30 C 编 译 器
- Page 67 and 68: MPLAB C30 C 编 译 器 运 行 时
- Page 69 and 70: MPLAB C30 C 编 译 器 运 行 时
- Page 71: MPLAB C30 C 编 译 器 运 行 时
- Page 75 and 76: MPLAB C30 C 编 译 器 运 行 时
- Page 77 and 78: MPLAB C30 C 编 译 器 运 行 时
- Page 79 and 80: MPLAB C30 C 编 译 器 运 行 时
- Page 81 and 82: MPLAB C30 C 编 译 器 运 行 时
- Page 83 and 84: MPLAB ® C30用 户 指 南第 5
- Page 85 and 86: MPLAB ® C30用 户 指 南第 6
- Page 87 and 88: 器 件 支 持 文 件6.5 使 用
- Page 89 and 90: 器 件 支 持 文 件6.6 使 用
- Page 91 and 92: 器 件 支 持 文 件6.7.2 使
- Page 93 and 94: MPLAB ® C30用 户 指 南第 7
- Page 95 and 96: 中 断7.3.3 为 中 断 服 务
- Page 97 and 98: 中 断表 7-1: 中 断 向 量 (
- Page 99 and 100: 中 断7.6 中 断 响 应 时 间7
- Page 101 and 102: 第 8 章 汇 编 语 言 和 C 模
- Page 103 and 104: 汇 编 语 言 和 C 模 块 混
- Page 105 and 106: 汇 编 语 言 和 C 模 块 混
- Page 107 and 108: MPLAB ® C30用 户 指 南附 录
- Page 109 and 110: 实 现 定 义 的 操 作A.4 标
- Page 111 and 112: 实 现 定 义 的 操 作下 表
- Page 113 and 114: 实 现 定 义 的 操 作A.14 预
- Page 115 and 116: 实 现 定 义 的 操 作A.16 信
- Page 117 and 118: 实 现 定 义 的 操 作A.23 GET
- Page 119 and 120: 附 录 B MPLAB C30 C 编 译 器
- Page 121 and 122: MPLAB C30 C 编 译 器 诊 断ambi
MPLAB ® <strong>C30</strong> 用 户 指 南2. 如 果 使 用 了 -mlarge-data 或 -mlarge-scalar 命 令 行 选 项 , 那 么 可 通 过 指 定near 属 性 将 变 量 排 除 在 far 数 据 空 间 外 ( 即 存 放 在 near 数 据 空 间 )。3. 命 令 行 选 项 的 作 用 域 仅 限 于 模 块 内 部 , 也 可 以 不 使 用 命 令 行 选 项 , 而 通 过 指 定far 属 性 将 变 量 存 放 在 far 数 据 段 中 。如 果 应 用 的 near 变 量 在 8K 的 near 数 据 空 间 中 存 放 不 下 , 链 接 器 将 产 生 错 误 消 息 。4.7.2 Near 代 码 和 Far 代 码具 有 near 属 性 的 函 数 ( 函 数 在 彼 此 的 32K 字 范 围 内 ) 互 相 调 用 时 比 非 near 属 性 的 函数 效 率 高 。 如 果 已 知 应 用 程 序 中 的 所 有 函 数 都 是 near 的 , 那 么 在 编 译 每 个 模 块 时 就 可以 使 用 默 认 的 -msmall-code 命 令 行 选 项 来 指 示 编 译 器 采 用 更 高 效 的 函 数 调 用 形 式 。如 果 这 个 默 认 的 选 项 不 适 合 , 可 以 使 用 下 面 的 可 选 方 案 :1. 可 以 使 用 -msmall-code 命 令 行 选 项 来 编 译 应 用 程 序 的 某 些 模 块 。 在 这 种 情 况下 , 只 有 这 些 模 块 中 的 函 数 调 用 可 以 采 用 更 高 效 的 函 数 调 用 形 式 。2. 如 果 已 使 用 -msmall-code 命 令 行 选 项 , 那 么 编 译 器 可 能 被 指 示 对 具 有 far 属 性的 函 数 使 用 长 函 数 调 用 形 式 。3. 命 令 行 选 项 的 作 用 域 限 于 模 块 内 部 , 可 以 不 使 用 命 令 行 选 项 , 而 通 过 在 函 数 的 定义 和 声 明 中 指 定 near 属 性 , 指 示 编 译 器 使 用 更 高 效 的 函 数 调 用 形 式 调 用 这 些 函数 。-msmall-code 命 令 行 选 项 与 -msmall-data 命 令 行 选 项 的 区 别 在 于 , 采 用 前 者时 , 为 确 保 函 数 彼 此 “ 靠 近 ” 分 配 , 编 译 器 不 需 进 行 特 别 的 操 作 ; 而 采 用 后 者 时 , 编译 器 要 将 变 量 分 配 到 特 殊 的 段 中 。如 果 函 数 声 明 为 near, 而 其 调 用 函 数 无 法 采 用 函 数 调 用 的 更 高 效 形 式 调 用 它 时 , 链 接器 将 产 生 错 误 信 息 。DS51284C_CN 第 66 页© 2005 Microchip Technology Inc.