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.
混 合 使 用 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