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.8.5 Thumb LDM 和 STM 指 令<br />

Thumb 指 令 集 包 含 下 列 多 寄 存 器 传 送 指 令 组 :<br />

• 用 于 存 储 器 块 传 送 的 LDM 和 STM ;<br />

• 用 于 栈 操 作 的 PUSH 和 POP。<br />

LDM 和 STM<br />

这 些 指 令 可 用 于 从 存 储 器 中 装 载 到 低 位 寄 存 器 的 任 何 子 集 或 将 其 存 储 到 存 储<br />

器 。 在 多 寄 存 器 传 送 指 令 结 束 后 , 总 是 更 新 基 址 寄 存 器 。 必 须 指 定 ! 字 符 。 这 些<br />

指 令 的 唯 一 有 效 后 缀 是 IA。<br />

下 面 是 这 些 指 令 的 示 例 :<br />

LDMIA<br />

STMIA<br />

r1!, {r0,r2-r7}<br />

r4!, {r0-r3}<br />

PUSH 和 POP<br />

这 些 指 令 可 用 以 将 低 位 寄 存 器 的 任 何 子 集 和 ( 可 选 ) 链 接 寄 存 器 推 入 栈 中 , 以<br />

及 将 低 位 寄 存 器 的 任 何 子 集 和 pc( 可 选 ) 从 栈 中 弹 出 。 栈 的 基 址 存 放 在 r13 中 。<br />

下 面 是 这 些 指 令 的 示 例 :<br />

PUSH<br />

POP<br />

PUSH<br />

POP<br />

{r0-r3}<br />

{r0-r3}<br />

{r4-r7,lr}<br />

{r4-r7,pc}<br />

可 选 择 向 寄 存 器 列 表 中 添 加 lr 或 pc , 提 供 了 对 子 程 序 入 口 点 和 退 出 点 的 支 持 。<br />

栈 总 是 满 降 序 的 。<br />

Thumb 状 态 的 块 复 制 示 例<br />

块 复 制 示 例 第 2-46 页 的 示 例 2-11 可 转 换 为 Thumb 指 令 ( 请 参 阅 第 2-49 页 的 示<br />

例 2-13)。<br />

由 于 Thumb LDM 和 STM 只 能 存 取 低 位 寄 存 器 , 每 次 重 复 操 作 复 制 的 字 数 被 从 八 个<br />

减 到 四 个 。 此 外 , LDM 和 STM 指 令 可 用 于 一 次 执 行 单 个 字 复 制 , 因 为 它 们 在 每 次<br />

访 问 后 更 新 基 址 指 针 。 如 果 将 LDR 和 STR 用 于 实 现 这 种 操 作 , 则 需 要 单 独 的 ADD<br />

指 令 来 更 新 每 个 基 址 指 针 。<br />

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