23.10.2014 Views

RealView - ARM Information Center

RealView - ARM Information Center

RealView - ARM Information Center

SHOW MORE
SHOW LESS

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

2.10.7 使 用 两 个 基 于 寄 存 器 的 结 构<br />

有 时 候 需 要 同 时 操 作 具 有 相 同 类 型 的 两 个 结 构 。 例 如 , 如 果 需 要 等 价 的 伪 代 码 :<br />

newloc.x = oldloc.x + (value in r0);<br />

newloc.y = oldloc.y + (value in r1);<br />

newloc.z = oldloc.z + (value in r2);<br />

基 址 寄 存 器 需 要 交 替 地 指 向 oldloc 结 构 和 newloc 结 构 。 反 复 改 变 基 址 寄 存 器 将<br />

将 是 低 效 率 的 作 法 。 而 应 该 使 用 一 个 非 基 于 寄 存 器 的 映 射 , 并 像 示 例 2-26 中 一<br />

样 , 在 两 个 不 同 的 寄 存 器 中 设 置 两 个 指 针 。<br />

示 例 2-26<br />

MAP 0 ; Non-register based relative map used twice, for<br />

Pointx FIELD 4 ; old and new data at oldloc and newloc<br />

Pointy FIELD 4 ; oldloc and newloc are labels for<br />

Pointz FIELD 4 ; memory allocated in other sections<br />

; code<br />

ADR<br />

ADR<br />

LDR<br />

ADD<br />

STR<br />

LDR<br />

ADD<br />

STR<br />

LDR<br />

ADD<br />

STR<br />

r8,oldloc<br />

r9,newloc<br />

r3,[r8,Pointx] ; load from oldloc (r8)<br />

r3,r3,r0<br />

r3,[r9,Pointx] ; store to newloc (r9)<br />

r3,[r8,Pointy]<br />

r3,r3,r1<br />

r3,[r9,Pointy]<br />

r3,[r8,Pointz]<br />

r3,r3,r2<br />

r3,[r9,Pointz]<br />

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

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

Saved successfully!

Ooh no, something went wrong!