RealView Compilation Tools Developer Guide - ARM Information ...
RealView Compilation Tools Developer Guide - ARM Information ...
RealView Compilation Tools Developer Guide - ARM Information ...
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
<strong>ARM</strong> 和 Thumb 交 互 操 作<br />
第 三 段 代 码 将 两 个 寄 存 器 的 内 容 合 在 一 起 。<br />
最 后 一 段 标 记 为 stop 的 代 码 使 用 半 主 机 的 SWI 来 报 告 应 用 程 序 的 正 常 退 出 。<br />
有 关 半 主 机 的 更 多 信 息 , 请 参 阅 <strong>RealView</strong> <strong>Compilation</strong> <strong>Tools</strong> 2.0 版 编 译 程 序 和<br />
库 指 南 。<br />
备 注<br />
该 Thumb 半 主 机 SWI 的 编 号 不 同 于 <strong>ARM</strong> 半 主 机 SWI ( 是 0xAB 而 不 是 0x123456)。<br />
示 例 4-2<br />
AREA AddReg,CODE,READONLY ; Name this block of code.<br />
ENTRY<br />
; Mark first instruction to call.<br />
main<br />
ADR r0, ThumbProg + 1<br />
BX r0<br />
; Generate branch target address<br />
; and set bit 0, hence arrive<br />
; at target in Thumb state.<br />
; Branch exchange to ThumbProg.<br />
CODE16<br />
; Subsequent instructions are Thumb code.<br />
ThumbProg<br />
MOV r2, #2 ; Load r2 with value 2.<br />
MOV r3, #3 ; Load r3 with value 3.<br />
ADD r2, r2, r3<br />
; r2 = r2 + r3<br />
ADR r0, <strong>ARM</strong>Prog<br />
BX r0<br />
CODE32<br />
; Subsequent instructions are <strong>ARM</strong> code.<br />
<strong>ARM</strong>Prog<br />
MOV r4, #4<br />
MOV r5, #5<br />
ADD r4, r4, r5<br />
stop MOV r0, #0x18<br />
LDR r1, =0x20026<br />
SWI 0x123456<br />
END<br />
; angel_SWIreason_ReportException<br />
; ADP_Stopped_ApplicationExit<br />
; <strong>ARM</strong> semihosting SWI<br />
; Mark end of this file.<br />
<strong>ARM</strong> DUI 0203BSC © 2002、 2003 <strong>ARM</strong> Limited 版 权 所 有 。 保 留 所 有 权 利 。 4-7