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.
<strong>ARM</strong> 和 Thumb 交 互 操 作<br />
4.3 C 和 C++ 交 互 操 作 和 胶 合 代 码<br />
可 以 自 由 地 混 合 为 <strong>ARM</strong> 和 Thumb 而 编 译 的 C 和 C++ 代 码 , 但 是 , 在 <strong>ARM</strong> 体<br />
系 结 构 4T 版 中 ,<strong>ARM</strong> 和 Thumb 代 码 之 间 需 要 一 小 段 称 为 胶 合 代 码 的 代 码 , 才<br />
能 执 行 状 态 更 改 。<strong>ARM</strong> 链 接 程 序 在 检 测 到 交 互 操 作 调 用 时 生 成 这 些 交 互 操 作 胶<br />
合 代 码 。<br />
4.3.1 为 交 互 操 作 编 译 代 码<br />
--apcs /interwork 编 译 程 序 选 项 使 <strong>ARM</strong> 编 译 程 序 能 够 编 译 包 括 例 程 的 C 和 C++<br />
模 块 , 而 该 例 程 可 以 由 其 它 处 理 器 状 态 编 译 的 例 程 进 行 调 用 :<br />
armcc --thumb --apcs /interwork<br />
armcc --arm --apcs /interwork<br />
armcc --cpp --thumb --apcs /interwork<br />
armcc --cpp --arm --apcs /interwork<br />
备 注<br />
--arm 为 默 认 选 项 。<br />
为 <strong>ARM</strong> 体 系 结 构 4T 版 上 交 互 操 作 而 编 译 的 模 块 生 成 稍 大 的 代 码 , 通 常 对 于<br />
Thumb 大 2%, 对 于 <strong>ARM</strong> 大 1% 以 下 。 对 于 <strong>ARM</strong> 体 系 结 构 5 版 没 有 区 别 。<br />
在 叶 函 数 ( 其 函 数 体 不 包 含 函 数 的 调 用 ) 中 , 由 编 译 程 序 生 成 的 代 码 的 唯 一 更<br />
改 是 用 BX lr 替 换 MOV pc,lr。 MOV 指 令 不 造 成 必 要 的 状 态 更 改 。<br />
在 Thumb 模 式 下 为 <strong>ARM</strong> 体 系 结 构 4T 版 而 编 译 的 非 叶 函 数 中 , 编 译 程 序 必 须 替<br />
换 单 个 指 令 ( 举 例 说 明 ):<br />
POP {r4,r5,pc}<br />
成 为 序 列 :<br />
POP {r4,r5}<br />
POP {r3}<br />
BX r3<br />
这 对 性 能 有 一 点 影 响 。 为 交 互 操 作 编 译 所 有 源 模 块 , 除 非 能 够 确 保 它 们 永 远 不 会<br />
用 于 交 互 操 作 。<br />
--apcs /interwork 选 项 还 为 编 译 模 块 的 目 标 代 码 区 域 而 设 置 交 互 操 作 属 性 。 链 接<br />
程 序 检 测 此 属 性 并 插 入 相 应 的 胶 合 代 码 。<br />
4-10 © 2002、 2003 <strong>ARM</strong> Limited 版 权 所 有 。 保 留 所 有 权 利 。 <strong>ARM</strong> DUI 0203BSC