MPLAB® C30 C ç¼è¯å¨ç¨æ·æå
MPLAB® C30 C ç¼è¯å¨ç¨æ·æå MPLAB® C30 C ç¼è¯å¨ç¨æ·æå
MPLAB ® C30 用 户 指 南C.16 启 动 代 码C.17 编 译 器 管 理 的 资 源MPLAB C18 提 供 了 三 个 启 动 子 程 序 —— 一 个 启 动 子 程 序 不 对 用 户 数 据 进 行 初 始 化 , 一个 启 动 子 程 序 仅 初 始 化 有 显 式 初 始 化 的 变 量 , 另 外 一 个 启 动 子 程 序 初 始 化 所 有 变 量( 按 照 ANSI 标 准 的 要 求 , 将 无 显 式 初 始 化 的 变 量 初 始 化 为 零 )。MPLAB C30 提 供 两 个 启 动 子 程 序 —— 一 个 启 动 子 程 序 不 对 用 户 数 据 进 行 初 始 化 , 另 外一 个 启 动 子 程 序 初 始 化 除 持 久 数 据 段 中 的 变 量 之 外 的 所 有 变 量 ( 按 照 ANSI 标 准 的 要求 , 将 无 显 式 初 始 化 的 变 量 初 始 化 为 零 )。MPLAB C18 有 如 下 编 译 器 管 理 的 资 源 : PC、 WREG、 STATUS、 PROD、 段.tmpdata、 段 MATH_DATA、 FSR0、 FSR1、 FSR2、 TBLPTR 和 TABLAT。MPLAB C30 有 如 下 编 译 器 管 理 的 资 源 :W0-W15、 RCOUNT 和 SR。C.18 优 化下 面 列 出 了 每 个 编 译 器 进 行 的 优 化 。MPLAB C18MPLAB C30转 移 优 化 (-Ob+)优 化 设 置 (-On, 其 中 n 为 1, 2, 3 或 s) (1)代 码 排 序 (-Os+)尾 部 合 并 (-Ot+)删 除 执 行 不 到 的 代 码 (-Ou+)复 制 传 递 (-Op+)冗 余 存 储 删 除 (-Or+)死 代 码 删 除 (-Od+)合 并 相 同 的 字 符 串 (-Om+)-fwritable-strings存 储 区 选 择 优 化 (-On+)无 — 不 使 用 存 储 区W 寄 存 器 内 容 跟 踪 (-Ow+) 自 动 跟 踪 所 有 寄 存 器过 程 抽 象 (-Opa+)过 程 抽 象 (-mpa)注 1: 在 MPLAB C30 中 , 这 些 优 化 设 置 可 满 足 大 部 分 需 要 。 可 使 用 其 他 选 项 来 进 行 “ 微调 ”。 更 多 信 息 参 见 第 3.5.6 节 “ 控 制 优 化 的 选 项 ”。C.19 目 标 模 块 格 式C.20 实 现 定 义 的 操 作MPLAB C18 和 MPLAB C30 使 用 不 同 的 COFF 文 件 格 式 , 文 件 格 式 不 可 互 换 。对 于 负 的 整 型 值 的 右 移 :• MPLAB C18 不 保 留 符 号 位• MPLAB C30 保 留 符 号 位DS51284C_CN 第 158 页© 2005 Microchip Technology Inc.
MPLAB C18 与 MPLAB C30 C 编 译 器 比 较C.21 位 域MPLAB C18 中 的 位 域 不 能 跨 越 字 节 存 储 边 界 , 因 此 长 度 不 能 大 于 8 位 。MPLAB C30 支 持 任 意 位 数 的 位 域 , 位 域 长 度 最 大 为 基 础 类 型 的 长 度 。 任 何 整 型 都 可 以作 为 一 个 位 域 。 分 配 不 能 跨 越 基 础 类 型 的 位 边 界 。例 如 :struct foo {long long i:40;int j:16;char k:8;} x;struct bar {long long I:40;char J:8;int K:16;} y;使 用 MPLAB C30, 结 构 foo 的 大 小 将 为 10 个 字 节 。 i 将 被 分 配 到 位 偏 移 0 处 ( 直到 位 偏 移 39)。 在 j 之 前 会 填 充 8 位 , 分 配 在 位 偏 移 48 处 。 如 果 将 j 分 配 到 下 一 个可 用 的 位 偏 移 40 处 , 那 么 对 于 一 个 16 位 的 整 型 , 将 跨 越 一 个 存 储 边 界 。 将 在 j 之 后分 配 k, 分 配 到 位 偏 移 64 处 。 结 构 的 最 后 包 含 8 位 的 填 充 , 是 为 了 保 持 为 数 组 时 需 要的 对 齐 。 对 齐 为 2 字 节 , 因 为 结 构 中 的 最 大 对 齐 为 2 字 节 。使 用 MPLAB C30, 结 构 bar 的 大 小 将 为 8 个 字 节 。 i 将 被 分 配 到 位 偏 移 0 处 ( 直 到位 偏 移 39)。 j 之 前 不 需 要 填 充 , 因 为 对 于 一 个 char, 不 会 跨 越 存 储 边 界 。 J 被 分配 到 位 偏 移 40。 K 可 从 位 偏 移 48 开 始 分 配 , 这 样 就 完 成 了 整 个 结 构 的 分 配 , 没 有 浪费 任 何 存 储 空 间 。© 2005 Microchip Technology Inc. DS51284C_CN 第 159 页
- 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
- Page 123 and 124: MPLAB C30 C 编 译 器 诊 断cast
- Page 125 and 126: MPLAB C30 C 编 译 器 诊 断F‘
- Page 127 and 128: MPLAB C30 C 编 译 器 诊 断init
- Page 129 and 130: MPLAB C30 C 编 译 器 诊 断inva
- Page 131 and 132: MPLAB C30 C 编 译 器 诊 断Nneg
- Page 133 and 134: MPLAB C30 C 编 译 器 诊 断Rred
- Page 135 and 136: MPLAB C30 C 编 译 器 诊 断symb
- Page 137 and 138: MPLAB C30 C 编 译 器 诊 断void
- Page 139 and 140: MPLAB C30 C 编 译 器 诊 断anon
- Page 141 and 142: MPLAB C30 C 编 译 器 诊 断comp
- Page 143 and 144: MPLAB C30 C 编 译 器 诊 断dupl
- Page 145 and 146: MPLAB C30 C 编 译 器 诊 断func
- Page 147 and 148: MPLAB C30 C 编 译 器 诊 断‘i
- Page 149 and 150: MPLAB C30 C 编 译 器 诊 断libr
- Page 151 and 152: MPLAB C30 C 编 译 器 诊 断Ppar
- Page 153 and 154: MPLAB C30 C 编 译 器 诊 断shif
- Page 155 and 156: MPLAB C30 C 编 译 器 诊 断too
- Page 157 and 158: MPLAB C30 C 编 译 器 诊 断V__V
- Page 159 and 160: MPLAB ® C30用 户 指 南附 录
- Page 161 and 162: MPLAB C18 与 MPLAB C30 C 编 译
- Page 163: MPLAB C18 与 MPLAB C30 C 编 译
- Page 167 and 168: MPLAB ® C30用 户 指 南附 录
- Page 169 and 170: MPLAB ® C30用 户 指 南附 录
- Page 171 and 172: GNU 免 费 文 档 许 可 证您
- Page 173 and 174: GNU 免 费 文 档 许 可 证5.
- Page 175 and 176: MPLAB ® C30用 户 指 南术 语
- Page 177 and 178: 术 语 表非 实 时 (Non Real-Ti
- Page 179 and 180: 术 语 表警 告 (Warning)提 醒
- Page 181 and 182: 术 语 表MPLINK 目 标 链 接
- Page 183 and 184: 术 语 表Single Step这 一 命
- Page 185 and 186: 术 语 表未 初 始 化 数 据
- Page 187 and 188: MPLAB ® C30用 户 指 南索 引
- Page 189 and 190: 索 引-fno-unsigned-bitfields.....
- Page 191 and 192: 索 引-msmall-code ...............
- Page 193 and 194: 索 引-Wnested-externs............
- Page 195 and 196: 索 引注 :© 2005 Microchip Techn
MPLAB C18 与 MPLAB <strong>C30</strong> C 编 译 器 比 较C.21 位 域MPLAB C18 中 的 位 域 不 能 跨 越 字 节 存 储 边 界 , 因 此 长 度 不 能 大 于 8 位 。MPLAB <strong>C30</strong> 支 持 任 意 位 数 的 位 域 , 位 域 长 度 最 大 为 基 础 类 型 的 长 度 。 任 何 整 型 都 可 以作 为 一 个 位 域 。 分 配 不 能 跨 越 基 础 类 型 的 位 边 界 。例 如 :struct foo {long long i:40;int j:16;char k:8;} x;struct bar {long long I:40;char J:8;int K:16;} y;使 用 MPLAB <strong>C30</strong>, 结 构 foo 的 大 小 将 为 10 个 字 节 。 i 将 被 分 配 到 位 偏 移 0 处 ( 直到 位 偏 移 39)。 在 j 之 前 会 填 充 8 位 , 分 配 在 位 偏 移 48 处 。 如 果 将 j 分 配 到 下 一 个可 用 的 位 偏 移 40 处 , 那 么 对 于 一 个 16 位 的 整 型 , 将 跨 越 一 个 存 储 边 界 。 将 在 j 之 后分 配 k, 分 配 到 位 偏 移 64 处 。 结 构 的 最 后 包 含 8 位 的 填 充 , 是 为 了 保 持 为 数 组 时 需 要的 对 齐 。 对 齐 为 2 字 节 , 因 为 结 构 中 的 最 大 对 齐 为 2 字 节 。使 用 MPLAB <strong>C30</strong>, 结 构 bar 的 大 小 将 为 8 个 字 节 。 i 将 被 分 配 到 位 偏 移 0 处 ( 直 到位 偏 移 39)。 j 之 前 不 需 要 填 充 , 因 为 对 于 一 个 char, 不 会 跨 越 存 储 边 界 。 J 被 分配 到 位 偏 移 40。 K 可 从 位 偏 移 48 开 始 分 配 , 这 样 就 完 成 了 整 个 结 构 的 分 配 , 没 有 浪费 任 何 存 储 空 间 。© 2005 Microchip Technology Inc. DS51284C_CN 第 159 页