23.10.2014 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.

编 写 <strong>ARM</strong> 和 Thumb 汇 编 语 言<br />

如 果 您 想 将 相 同 的 技 巧 用 于 包 含 存 储 器 映 射 I/O 的 ( 或 者 因 其 它 原 因 不 得 改 变 其<br />

绝 对 地 址 的 ) 存 储 器 段 , 则 须 注 意 保 持 代 码 的 可 维 护 性 。<br />

一 个 方 法 是 为 代 码 添 加 注 释 , 以 警 告 维 护 者 在 修 改 定 义 时 要 小 心 。 另 一 个 更 好 的<br />

方 法 是 使 用 绝 对 地 址 定 义 来 控 制 基 于 寄 存 器 的 定 义 。<br />

使 用 MAP offset,reg, 后 面 跟 着 label FIELD 0 , 使 label 变 成 一 个 基 于 寄 存 器 的<br />

符 号 , 寄 存 器 部 分 为 reg , 数 字 部 分 为 offset。 示 例 2-25 说 明 了 这 种 方 法 。<br />

示 例 2-25<br />

StartOfIOArea EQU 0x1000000<br />

SendFlag_Abs EQU 0x1000000<br />

SendData_Abs EQU 0x1000004<br />

RcvFlag_Abs EQU 0x1000008<br />

RcvData_Abs EQU 0x100000C<br />

IOAreaBase RN r11<br />

MAP (SendFlag_Abs-StartOfIOArea),IOAreaBase<br />

SendFlag FIELD 0<br />

MAP (SendData_Abs-StartOfIOArea),IOAreaBase<br />

SendData FIELD 0<br />

MAP (RcvFlag_Abs-StartOfIOArea),IOAreaBase<br />

RcvFlag FIELD 0<br />

MAP (RcvData_Abs-StartOfIOArea),IOAreaBase<br />

RcvData FIELD 0<br />

使 用 LDR IOAreaBase,=StartOfIOArea 装 载 基 址 。 这 就 允 许 用 类 似 LDR R0,RcvFlag 和<br />

STR R4,SendData 的 语 句 来 访 问 单 独 的 位 置 。<br />

2-64 © 2002、 2003 <strong>ARM</strong> Limited 版 权 所 有 。 保 留 所 有 权 利 。 <strong>ARM</strong> DUI 0204BSC

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

Saved successfully!

Ooh no, something went wrong!