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.

处 理 处 理 器 异 常<br />

DoSelectedManipulation PROC<br />

STMFD sp!,{r3,lr}<br />

MOV r12,r2<br />

SWI 0x80<br />

LDMFD sp!,{r3,pc}<br />

ENDP<br />

还 可 利 用 __swi 机 制 从 C 中 将 SWI 编 号 传 递 到 r0 中 。 例 如 , 如 果 将 SWI 0x0 用 作<br />

通 用 SWI, 且 操 作 0 为 字 符 读 , 操 作 1 为 字 符 写 , 那 么 , 就 可 如 下 建 立 :<br />

__swi (0) char __ReadCharacter (unsigned op);<br />

__swi (0) void __WriteCharacter (unsigned op, char c);<br />

可 通 过 如 下 定 义 使 其 具 有 更 好 的 可 读 性 风 格 :<br />

#define ReadCharacter () __ReadCharacter (0);<br />

#define WriteCharacter (c) __WriteCharacter (1, c);<br />

但 是 , 如 果 以 这 种 方 式 使 用 的 r0, 那 么 , 仅 有 三 个 寄 存 器 可 用 于 将 参 数 传 递 到<br />

SWI。 通 常 , 在 不 得 不 将 除 r0-r3 之 外 的 更 多 参 数 传 递 给 子 例 程 时 , 可 通 过 使 用<br />

堆 来 完 成 但 是 , SWI 处 理 程 序 不 容 易 存 取 堆 参 数 , 因 为 通 常 它 们 是 存 在 用 户 模<br />

式 的 堆 里 而 不 是 在 SWI 处 理 程 序 使 用 的 超 级 用 户 模 式 的 堆 里 。<br />

作 为 另 一 种 选 择 , 其 中 一 个 寄 存 器 ( 通 常 是 r1) 可 用 来 指 向 存 储 其 它 参 数 的 存<br />

储 器 块 。<br />

6-26 © 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!