34 lines
602 B
ArmAsm
34 lines
602 B
ArmAsm
//
|
|
// memchr - Returns a pointer to the first occurrence of character c in
|
|
// the first n characters of memory area s1, or NULL if c does
|
|
// not occur
|
|
//
|
|
// Input: s1 - memory area in which to conduct search
|
|
// c - character being sought
|
|
// n - maximum number of characters to search
|
|
//
|
|
// Output: pointer to character 'c' or NULL
|
|
//
|
|
.seg
|
|
|
|
sp := r15
|
|
SP := rr14
|
|
|
|
.psec
|
|
.code
|
|
_memchr::
|
|
{
|
|
ldm r2,|_stkseg+4|(sp),#4 // rr2 = s1
|
|
// r4 = c
|
|
// r5 = n
|
|
cp r5,#0
|
|
jr le,~ret0
|
|
cpirb rl4,@rr2,r5,eq
|
|
jr nz,~ret0
|
|
dec r3,#1
|
|
ret
|
|
~ret0: // return ((char *)0)
|
|
subl rr2,rr2
|
|
ret
|
|
}
|