12.07.2015 Views

RealView 编译工具编译器参考指南 - ARM Information Center

RealView 编译工具编译器参考指南 - ARM Information Center

RealView 编译工具编译器参考指南 - ARM Information Center

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.

编 译 器 特 有 的 功 能小 心在 使 用 全 局 寄 存 器 变 量 时 必 须 小 心 , 原 因 如 下 :• 在 链 接 时 不 进 行 检 查 , 因 而 无 法 保 证 不 同 编 译 单 元 之 间 的 直 接 调 用 是 合 理的 。 如 果 可 能 , 请 在 程 序 的 每 个 编 译 单 元 内 定 义 程 序 中 使 用 的 全 局 寄 存 器变 量 。 通 常 , 最 好 将 定 义 放 在 全 局 头 文 件 中 。 在 使 用 全 局 寄 存 器 之 前 , 必须 及 早 在 代 码 中 设 置 寄 存 器 内 的 值 。• 全 局 寄 存 器 变 量 映 射 到 由 被 调 用 方 保 存 的 寄 存 器 , 因 此 , 对 于 未 将 该 变 量用 作 全 局 寄 存 器 变 量 的 编 译 单 元 , 将 通 过 函 数 调 用 来 保 存 和 恢 复 它 的 值 ,例 如 , 库 函 数 。• 回 调 使 用 全 局 寄 存 器 变 量 的 编 译 单 元 是 很 危 险 的 。 例 如 , 如 果 从 未 声 明 某个 全 局 寄 存 器 变 量 的 编 译 单 元 中 调 用 使 用 该 全 局 寄 存 器 的 函 数 , 函 数 将 从其 假 定 的 全 局 寄 存 器 变 量 中 读 取 错 误 的 值 。• 只 能 在 文 件 范 围 内 使 用 此 存 储 类 。示 例示 例 4-1 声 明 一 个 分 配 给 r5 的 全 局 变 量 寄 存 器 。示 例 4-1 声 明 全 局 整 数 寄 存 器 变 量__global_reg(2) int x; v2 is the synonym for r5示 例 4-2 将 生 成 错 误 , 因 为 必 须 在 同 一 变 量 的 所 有 声 明 中 指 定 全 局 寄 存 器 。示 例 4-2 全 局 寄 存 器 - 声 明 错 误int x;__global_reg(1) int x; // error在 C 中 , 无 法 在 定 义 时 初 始 化 __global_reg 变 量 。 第 4-9 页 的 示 例 4-3 在 C 中 生成 错 误 , 而 在 C++ 中 不 生 成 错 误 。4-8 Copyright © 2007-2009 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0348BCNon-Confidential, Unrestricted AccessID090708

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

Saved successfully!

Ooh no, something went wrong!