23.10.2014 Views

RealView - ARM Information Center

RealView - ARM Information Center

RealView - ARM Information Center

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

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

2.2.3 处 理 器 模 式<br />

<strong>ARM</strong> 处 理 器 支 持 多 达 七 个 处 理 器 模 式 , 具 体 要 取 决 于 体 系 结 构 的 版 本 。 这 些 模<br />

式 是 :<br />

0b10000 User ;<br />

0b10001 FIQ — 快 速 中 断 请 求 ;<br />

0b10010 IRQ — 中 断 请 求 ;<br />

0b10011 Supervisor ;<br />

0b10111 Abort ;<br />

0b11011 Undefined ;<br />

0b11111 System (<strong>ARM</strong> 体 系 结 构 v4 及 以 上 版 本 )。<br />

除 User 模 式 外 的 所 有 模 式 称 为 特 权 模 式 。<br />

要 求 任 务 保 护 的 应 用 程 序 通 常 在 [User] 模 式 下 执 行 。 有 些 嵌 入 式 应 用 程 序 可 能<br />

完 全 运 行 在 [Supervisor] 或 [System] 模 式 下 。<br />

进 入 除 [User] 模 式 外 的 所 有 模 式 是 为 了 处 理 异 常 或 访 问 特 许 的 资 源 。 有 关 详 细<br />

信 息 , 请 参 阅 <strong>RealView</strong> 编 译 工 具 2.0 版 开 发 人 员 指 南 中 的 处 理 处 理 器 异 常 一 章 ,<br />

以 及 <strong>ARM</strong> 体 系 结 构 参 考 手 册 。<br />

2.2.4 寄 存 器<br />

<strong>ARM</strong> 处 理 器 拥 有 37 个 寄 存 器 。 这 些 寄 存 器 按 部 分 重 叠 的 编 组 加 以 排 列 。 每 种 处<br />

理 器 模 式 有 一 个 不 同 的 寄 存 器 组 。 编 组 的 寄 存 器 为 处 理 处 理 器 异 常 和 特 许 操 作<br />

提 供 了 快 速 的 环 境 切 换 。 有 关 寄 存 器 如 何 编 组 的 详 细 信 息 , 请 参 阅 <strong>ARM</strong> 体 系 结<br />

构 参 考 手 册 。<br />

下 列 寄 存 器 可 用 在 <strong>ARM</strong> 体 系 结 构 v3 及 以 上 版 本 中 :<br />

• 30 个 通 用 的 32 位 寄 存 器 ;<br />

• 第 2-5 页 的 程 序 计 数 器 (pc) ;<br />

• 第 2-5 页 的 当 前 程 序 状 态 寄 存 器 (CPSR) ;<br />

• 第 2-6 页 的 五 个 保 存 的 程 序 状 态 寄 存 器 (SPSR)。<br />

30 个 通 用 的 32 位 寄 存 器<br />

具 体 取 决 于 当 前 处 理 器 模 式 , 任 一 时 刻 , 可 将 十 五 个 通 用 寄 存 器 看 作 r0, r1, ...,<br />

r13, r14。<br />

按 照 惯 例 , 在 <strong>ARM</strong> 汇 编 语 言 中 , r13 用 作 栈 指 针 (sp)。 C 和 C++ 编 译 程 序 总 是<br />

将 r13 用 作 栈 指 针 。<br />

2-4 © 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!