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.

命 令 参 考<br />

7.5.1 FRAME ADDRESS<br />

FRAME ADDRESS 命 令 说 明 如 何 为 后 面 的 指 令 计 算 规 范 框 架 地 址 。 只 能 在 含 有<br />

FUNCTION 和 ENDFUNC 命 令 , 或 含 有 PROC 和 ENDP 命 令 的 函 数 内 使 用 它 。<br />

语 法<br />

FRAME ADDRESS reg[,offset]<br />

其 中 :<br />

reg<br />

是 规 范 框 架 地 址 所 基 于 的 寄 存 器 。 这 一 般 是 sp, 除 非 函 数 使 用 了 独<br />

立 的 框 架 指 针 。<br />

offset 是 规 范 框 架 地 址 从 reg 起 的 偏 移 量 。 如 果 offset 是 0, 可 以 省 略 它 。<br />

用 法<br />

如 果 代 码 改 变 了 规 范 框 架 地 址 的 基 址 寄 存 器 , 或 者 如 果 代 码 改 变 了 规 范 框 架 地<br />

址 对 该 寄 存 器 的 偏 移 量 , 就 可 使 用 FRAME ADDRESS。 必 须 在 改 变 规 范 框 架 地 址 的 计<br />

算 方 式 的 指 令 之 后 , 立 即 使 用 FRAME ADDRESS。<br />

备 注<br />

如 果 代 码 使 用 了 单 个 指 令 来 保 存 寄 存 器 和 改 变 栈 指 针 , 可 以 使 用 FRAME PUSH 来 代<br />

替 FRAME ADDRESS 和 FRAME SAVE ( 请 参 阅 第 7-37 页 的 FRAME PUSH)。<br />

如 果 代 码 使 用 了 单 个 指 令 来 装 载 寄 存 器 和 改 变 栈 指 针 , 可 以 使 用 FRAME POP 来 代<br />

替 FRAME ADDRESS 和 FRAME RESTORE ( 请 参 阅 第 7-36 页 的 FRAME POP)。<br />

示 例<br />

_fn FUNCTION ; CFA (Canonical Frame Address) is value<br />

; of sp on entry to function<br />

STMFD sp!, {r4,fp,ip,lr,pc}<br />

FRAME PUSH {r4,fp,ip,lr,pc}<br />

SUB sp,sp,#4 ; CFA offset now changed<br />

FRAME ADDRESS sp,24<br />

; - so we correct it<br />

ADD fp,sp,#20<br />

FRAME ADDRESS fp,4<br />

; New base register<br />

; code using fp to base call-frame on, instead of sp<br />

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

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

Saved successfully!

Ooh no, something went wrong!