📄 thumbcode2.s
字号:
#*********************************************************************************************
# NAME: Thunbcode2.s *
# Author: Embest *
# Desc: Thunmbcode examples *
# copy words from src to dst *
# History: shw.He 2005.02.22 *
#*********************************************************************************************
/*------------------------------------------------------------------------------------------*/
/* constant define */
/*------------------------------------------------------------------------------------------*/
.global _start
/*------------------------------------------------------------------------------------------*/
/* code */
/*------------------------------------------------------------------------------------------*/
.text
.equ num, 20 /* Set number of words to be copied */
_start:
.arm /* Subsequent instructions are ARM header */
mov sp, #0x400 /* set up user_mode stack pointer (r13) */
adr r0, Tstart + 1 /* Processor starts in ARM state, */
bx r0 /* so small ARM code header used */
/* to call Thumb main program. */
.thumb /* Subsequent instructions are Thumb. */
Tstart:
ldr r0, =src /* r0 = pointer to source block */
ldr r1, =dst /* r1 = pointer to destination block */
mov r2, #num /* r2 = number of words to copy */
blockcopy:
lsr r3,r2, #2 /* number of four word multiples */
beq copywords /* less than four words to move ? */
push {r4-r7} /* save some working registers */
quadcopy:
ldmia r0!, {r4-r7} /* load 4 words from the source */
stmia r1!, {r4-r7} /* and put them at the destination */
sub r3, #1 /* decrement the counter */
bne quadcopy /* ... copy more */
pop {r4-r7} /* don't need these now - restore originals */
copywords:
mov r3, #3 /* bottom two bits represent number... */
and r2, r3 /* ...of odd words left to copy */
beq stop /* No words left to copy ? */
wordcopy:
ldmia r0!, {r3} /* a word from the source */
stmia r1!, {r3} /* store a word to the destination */
sub r2, #1 /* decrement the counter */
bne wordcopy /* ... copy more */
stop:
b stop
/*------------------------------------------------------------------------------------------*/
/* make a word pool */
/*------------------------------------------------------------------------------------------*/
.align
src:
.long 1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8,1,2,3,4
dst:
.long 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
.end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -