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 />

除 了 协 处 理 器 指 令 之 外 , 所 有 带 有 常 数 操 作 数 的 <strong>ARM</strong> 指 令 都 支 持 指 令 扩 展 。<br />

此 外 , 当 MUL 指 令 的 第 三 个 操 作 数 是 常 数 时 , 该 指 令 可 以 扩 展 为 一 系 列 加 法 和<br />

移 位 指 令 。<br />

用 扩 展 指 令 更 新 CPSR 的 效 果 是 :<br />

• 算 法 指 令 正 确 设 置 NZCV 标 志 。<br />

• 逻 辑 指 令 :<br />

— 正 确 设 置 NZ 标 志 ;<br />

— 不 改 变 V 标 志 ;<br />

— 破 坏 C 标 志 。<br />

标 号<br />

在 内 联 汇 编 程 序 语 句 中 可 以 使 用 C 和 C++ 标 号 。 只 能 用 以 下 格 式 通 过 跳 转 指 令<br />

跳 转 到 C 和 C++ 标 号 :<br />

B{cond} label<br />

存 储 器 声 明<br />

所 有 存 储 器 都 可 以 用 C 或 C++ 进 行 声 明 , 并 使 用 变 量 传 递 给 内 联 汇 编 程 序 。 因<br />

此 , 未 实 现 由 armasm 支 持 的 存 储 器 声 明 。<br />

SWI 和 BL 指 令<br />

利 用 内 联 汇 编 程 序 的 SWI 和 BL 指 令 , 可 在 常 规 指 令 字 段 后 指 定 3 个 可 选 寄 存 器 列<br />

表 。 寄 存 器 列 表 指 定 :<br />

• 作 为 输 入 参 数 的 寄 存 器 ;<br />

• 返 回 后 作 为 输 出 参 数 的 寄 存 器 ;<br />

• 被 所 调 用 函 数 破 坏 的 寄 存 器 。<br />

这 些 指 令 的 语 法 是 :<br />

SWI{cond} swi_num, {input_param_list}, {output_value_list}, {corrupt_reg_list}<br />

BL{cond} function, {input_param_list}, {output_value_list}, {corrupt_reg_list}<br />

例 如 :<br />

BL foo {r0=expression1, r1=expression2, r2}, {result=r0, r1}<br />

省 略 的 列 表 将 视 为 空 列 表 , 而 BL 总 是 破 坏 ip 和 lr。BL 的 默 认 破 坏 列 表 是 r0-r3。<br />

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