08.11.2014 Views

RealView Compilation Tools アセンブラガイド - ARM Information Center

RealView Compilation Tools アセンブラガイド - ARM Information Center

RealView Compilation Tools アセンブラガイド - 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> アセン ブ リ 言 語 の 記 述<br />

LDR Rd, =label の 使 用 例 : 文 字 列 のコ ピー<br />

例 2-7 は、 あ る 1 つの 文 字 列 を 別 の 文 字 列 で 上 書 きする <strong>ARM</strong> コードルーチン<br />

を 示 しています。 こ こでは、LDR 疑 似 命 令 を 使 用 し てデータ セ ク シ ョ ンか ら 2<br />

つの 文 字 列 のア ド レ ス を ロード し ます。 以 下 は 特 に 重 要 です。<br />

DCB<br />

LDR, STR<br />

DCB ディレクティブは、 ス トアする 1 バイ ト 以 上 の 値 を 定 義 し ま<br />

す。 DCB には 整 数 値 だけでな く 、 引 用 符 で 囲 んだ 文 字 列 も 使 用 で<br />

きます。 文 字 列 の 各 文 字 は、 連 続 し たバ イ ト に 配 置 さ れます。 詳<br />

細 については、 「DCB」 (ページ 7-26) を 参 照 して 下 さい。<br />

LDR 命 令 と STR 命 令 は、 ポ ス ト イ ンデ ク ス ア ド レ シングを 使 用 し<br />

て、 ア ド レ ス レジス タ を 更 新 し ます。 例 えば、 以 下 の 命 令<br />

LDRB<br />

r2,[r1],#1<br />

は、 r1 が 指 すア ド レ スの 内 容 を r2 にロード し、r1 を 1 ずつイ ン<br />

クリメントします。<br />

例 2-7 文 字 列 のコ ピー<br />

AREA StrCopy, CODE, READONLY<br />

ENTRY<br />

; Mark first instruction to execute<br />

start<br />

LDR r1, =srcstr ; Pointer to first string<br />

LDR r0, =dststr ; Pointer to second string<br />

BL strcopy ; Call subroutine to do copy<br />

stop<br />

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

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

SVC #0x123456 ; <strong>ARM</strong> semihosting (formerly SWI)<br />

strcopy<br />

LDRB r2, [r1],#1 ; Load byte and update address<br />

STRB r2, [r0],#1 ; Store byte and update address<br />

CMP r2, #0 ; Check for zero terminator<br />

BNE strcopy ; Keep going if not<br />

MOV pc,lr ; Return<br />

AREA Strings, DATA, READWRITE<br />

srcstr DCB "First string - source",0<br />

dststr DCB "Second string - destination",0<br />

END<br />

2-42 Copyright © 2002-2008 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0204IJ<br />

Non-Confidential

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

Saved successfully!

Ooh no, something went wrong!