RealView Compilation Tools Developer Guide - ARM Information ...
RealView Compilation Tools Developer Guide - ARM Information ...
RealView Compilation Tools Developer Guide - ARM Information ...
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