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

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!