33 lines
463 B
ArmAsm
33 lines
463 B
ArmAsm
//
|
|
// memset - set an array of nchars starting at s1 to the character c.
|
|
// Return s1.
|
|
//
|
|
// Input: s1 - destination
|
|
// c - initializing character
|
|
// n - number of bytes to copy
|
|
//
|
|
.seg
|
|
|
|
sp := r15
|
|
SP := rr14
|
|
|
|
.psec
|
|
.code
|
|
_memset::
|
|
{
|
|
ldm r2,|_stkseg+4|(sp),#4 // rr2 = s1
|
|
// r4 = c
|
|
// r5 = n
|
|
cp r5,#0
|
|
ret le
|
|
ldb @rr2,rl4
|
|
dec r5,#1
|
|
ret z
|
|
ldl rr6,rr2 // destination
|
|
inc r7,#1
|
|
ldl rr0,rr2
|
|
ldirb @rr6,@rr2,r5
|
|
ldl rr2,rr0
|
|
ret
|
|
}
|