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 />
使 用 胶 合 代 码 的 汇 编 语 言 交 互 操 作 的 示 例<br />
示 例 4-5 说 明 了 将 寄 存 器 r0 到 r2 分 别 设 置 为 1、2 和 3 的 代 码 。 寄 存 器 r0 和 r2<br />
由 <strong>ARM</strong> 代 码 设 置 。 r1 由 Thumb 代 码 设 置 。 请 注 意 :<br />
• 该 代 码 必 须 用 --apcs /interwork 选 项 来 进 行 汇 编 ;<br />
• 使 用 BX lr 指 令 从 子 例 程 中 返 回 , 而 不 是 通 常 的 MOV pc,lr。<br />
示 例 4-5<br />
; *****<br />
; arm.s<br />
; *****<br />
AREA Arm,CODE,READONLY ; Name this block of code.<br />
IMPORT ThumbProg<br />
ENTRY<br />
; Mark 1st instruction to call.<br />
<strong>ARM</strong>Prog<br />
MOV r0,#1<br />
; Set r0 to show in <strong>ARM</strong> code.<br />
BL ThumbProg ; Call Thumb subroutine.<br />
MOV r2,#3<br />
; Set r2 to show returned to <strong>ARM</strong>.<br />
; Terminate execution.<br />
MOV r0, #0x18<br />
; angel_SWIreason_ReportException<br />
LDR r1, =0x20026<br />
; ADP_Stopped_ApplicationExit<br />
SWI 0x123456<br />
; <strong>ARM</strong> semihosting SWI<br />
END<br />
; *******<br />
; thumb.s<br />
; *******<br />
AREA Thumb,CODE,READONLY ; Name this block of code.<br />
CODE16<br />
; Subsequent instructions are Thumb.<br />
EXPORT ThumbProg<br />
ThumbProg<br />
MOV r1, #2<br />
; Set r1 to show reached Thumb code.<br />
BX lr ; Return to <strong>ARM</strong> subroutine.<br />
END<br />
; Mark end of this file.<br />
按 照 这 些 步 骤 编 译 并 链 接 模 块 , 然 后 检 查 交 互 操 作 胶 合 代 码 :<br />
1. 键 入 armasm arm.s 来 汇 编 <strong>ARM</strong> 代 码 。<br />
2. 键 入 armasm -16 --apcs /interwork thumb.s 来 汇 编 Thumb 代 码 。<br />
3. 键 入 armlink arm.o thumb.o -o count 来 链 接 两 个 目 标 文 件 。<br />
<strong>ARM</strong> DUI 0203BSC © 2002、 2003 <strong>ARM</strong> Limited 版 权 所 有 。 保 留 所 有 权 利 。 4-15