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.7.2 用 LDR Rd, = label 装 载 地 址<br />

LDR Rd,= 伪 指 令 可 以 将 任 何 32 位 常 数 装 载 到 寄 存 器 中 。 请 参 阅 第 2-29 页 的 使<br />

用 LDR Rd, =const 装 载 。 它 也 接 受 相 对 程 序 的 表 达 式 , 例 如 标 号 , 以 及 带 偏 移<br />

的 标 号 。<br />

汇 编 程 序 通 过 完 成 下 列 操 作 来 转 换 一 条 LDR r0,=label 伪 指 令 :<br />

• 把 label 的 地 址 放 入 一 个 文 字 池 ( 嵌 入 在 代 码 中 的 一 部 分 存 储 器 , 用 于 存<br />

放 常 数 值 )。<br />

• 产 生 相 对 程 序 的 LDR 指 令 , 来 从 文 字 池 读 取 该 地 址 , 例 如 :<br />

LDR<br />

rn [pc, #offset to literal pool]<br />

; load register n with one word<br />

; from the address [pc + offset]<br />

必 须 要 确 保 范 围 内 有 一 个 文 字 池 。 有 关 详 细 信 息 请 参 阅 第 2-30 页 的 放 置 文<br />

字 池 。<br />

与 ADR 和 ADRL 伪 指 令 不 同 的 是 ,LDR 可 以 使 用 当 前 段 之 外 的 标 号 。 如 果 标 号 在 当<br />

前 段 之 外 , 那 么 当 汇 编 源 文 件 时 , 汇 编 程 序 在 目 标 代 码 中 放 置 一 个 重 定 位 命 令 。<br />

重 定 位 命 令 指 示 链 接 程 序 在 链 接 时 确 定 地 址 。 无 论 链 接 程 序 将 包 含 LDR 和 文 字 池<br />

的 段 放 在 何 处 , 该 地 址 都 保 持 有 效 。<br />

示 例 2-9 说 明 了 这 一 实 现 过 程 。 该 示 例 的 代 码 在 RVCT 的 examples\asm 子 目 录 的<br />

ldrlabel.s 文 件 中 。 有 关 如 何 汇 编 、 链 接 和 执 行 该 示 例 的 操 作 说 明 , 请 参 阅 第 2-2<br />

页 的 代 码 示 例 。<br />

注 释 中 列 出 的 指 令 是 由 汇 编 程 序 生 成 的 <strong>ARM</strong> 指 令 。<br />

示 例 2-9<br />

AREA LDRlabel, CODE,READONLY<br />

ENTRY<br />

; Mark first instruction to execute<br />

start<br />

BL func1 ; Branch to first subroutine<br />

BL func2 ; Branch to second subroutine<br />

stop MOV r0, #0x18 ; angel_SWIreason_ReportException<br />

LDR r1, =0x20026 ; ADP_Stopped_ApplicationExit<br />

SWI 0x123456 ; <strong>ARM</strong> semihosting SWI<br />

func1<br />

LDR r0, =start ; => LDR R0,[PC, #offset into<br />

; Literal Pool 1]<br />

LDR r1, =Darea + 12 ; => LDR R1,[PC, #offset into<br />

; Literal Pool 1]<br />

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

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

Saved successfully!

Ooh no, something went wrong!