23.10.2014 Views

RealView - ARM Information Center

RealView - ARM Information Center

RealView - ARM Information Center

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 />

2.3.4 一 个 Thumb 汇 编 语 言 模 块 示 例<br />

示 例 2-3 说 明 了 Thumb 汇 编 语 言 模 块 的 一 些 核 心 成 分 。 此 示 例 基 于 subrout.s 文<br />

件 。 该 示 例 的 代 码 在 RVCT 的 examples\asm 子 目 录 下 的 thumbsub.s 文 件 中 。 有 关<br />

如 何 汇 编 、 链 接 和 执 行 该 示 例 的 操 作 说 明 , 请 参 阅 第 2-2 页 的 代 码 示 例 。<br />

示 例 2-3<br />

AREA ThumbSub, CODE, READONLY ; Name this block of code<br />

ENTRY<br />

; Mark first instruction to execute<br />

CODE32<br />

; Subsequent instructions are <strong>ARM</strong><br />

header ADR r0, start + 1 ; Processor starts in <strong>ARM</strong> state,<br />

BX r0 ; so small <strong>ARM</strong> code header used<br />

; to call Thumb main program<br />

CODE16<br />

; Subsequent instructions are Thumb<br />

start<br />

MOV r0, #10 ; Set up parameters<br />

MOV r1, #3<br />

BL doadd ; Call subroutine<br />

stop<br />

MOV r0, #0x18 ; angel_SWIreason_ReportException<br />

LDR r1, =0x20026 ; ADP_Stopped_ApplicationExit<br />

SWI 0xAB ; Thumb semihosting SWI<br />

doadd<br />

ADD r0, r0, r1 ; Subroutine code<br />

MOV pc, lr ; Return from subroutine<br />

END<br />

; Mark end of file<br />

CODE32 和 CODE16 命 令<br />

这 些 命 令 指 示 汇 编 程 序 将 随 后 的 指 令 汇 编 为 <strong>ARM</strong> (CODE32) 或 Thumb (CODE16)<br />

指 令 。 它 们 不 能 汇 编 成 运 行 时 改 变 处 理 器 状 态 的 指 令 。 它 们 只 能 改 变 汇 编 程 序<br />

状 态 。<br />

默 认 情 况 下 , <strong>ARM</strong> 汇 编 程 序 armasm 启 动 在 <strong>ARM</strong> 模 式 下 。 如 果 想 让 其 启 动 在<br />

Thumb 模 式 下 , 可 以 在 命 令 行 中 使 用 -16 选 项 。<br />

BX 指 令<br />

这 是 一 条 可 在 运 行 时 改 变 处 理 器 状 态 的 跳 转 指 令 。 目 的 地 址 的 最 低 有 效 位 指 定<br />

其 是 一 条 <strong>ARM</strong> 指 令 ( 清 除 ) 还 是 Thumb 指 令 ( 设 置 )。 在 此 例 中 , 该 位 是 在<br />

ADR 伪 指 令 中 设 置 的 。<br />

2-20 © 2002、 2003 <strong>ARM</strong> Limited 版 权 所 有 。 保 留 所 有 权 利 。 <strong>ARM</strong> DUI 0204BSC

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

Saved successfully!

Ooh no, something went wrong!