01.12.2014 Views

RealView Compilation Tools Developer Guide - ARM Information ...

RealView Compilation Tools Developer Guide - ARM Information ...

RealView Compilation Tools Developer Guide - ARM Information ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

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

混 合 使 用 C、 C++ 和 汇 编 语 言<br />

5.4 从 汇 编 代 码 访 问 C 全 局 变 量<br />

只 能 通 过 地 址 间 接 访 问 全 局 变 量 。 要 访 问 全 局 变 量 , 请 使 用 IMPORT 命 令 输 入 全<br />

局 变 量 , 然 后 将 地 址 载 入 寄 存 器 。 可 以 根 据 变 量 的 类 型 使 用 载 入 和 存 储 指 令 访<br />

问 该 变 量 。<br />

对 于 无 符 号 变 量 , 使 用 :<br />

• LDRB/STRB 用 于 char 型 ;<br />

• LDRH/STRH 用 于 short 型 ( 对 于 <strong>ARM</strong> 体 系 结 构 v3, 使 用 两 个 LDRB/STRB<br />

指 令 );<br />

• LDR/STR 用 于 int 型 。<br />

对 于 有 符 号 变 量 , 请 使 用 等 效 的 有 符 号 指 令 , 如 LDRSB 和 LDRSH。<br />

可 以 用 LDM 和 STM 指 令 作 为 整 体 访 问 少 于 8 个 字 的 小 结 构 。 可 以 用 适 当 类 型 的 载<br />

入 和 存 储 指 令 访 问 结 构 的 单 个 成 员 。 为 了 访 问 成 员 , 必 须 了 解 该 成 员 从 结 构 开<br />

始 处 的 偏 移 量 。<br />

示 例 5-5 将 整 型 全 局 变 量 globvar 的 地 址 载 入 r1、 将 该 地 址 中 包 含 的 值 载 入 r0、<br />

将 它 与 2 相 加 , 然 后 将 新 值 存 回 globvar 中 。<br />

示 例 5-5 全 局 地 址<br />

AREA<br />

EXPORT<br />

IMPORT<br />

globals,CODE,READONLY<br />

asmsubroutine<br />

globvar<br />

asmsubroutine<br />

LDR r1, =globvar<br />

LDR r0, [r1]<br />

ADD r0, r0, #2<br />

STR r0,[r1]<br />

MOV pc, lr<br />

END<br />

; read address of globvar into<br />

; r1 from literal pool<br />

5-16 © 2002、 2003 <strong>ARM</strong> Limited 版 权 所 有 。 保 留 所 有 权 利 。 <strong>ARM</strong> DUI 0203BSC

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

Saved successfully!

Ooh no, something went wrong!