/* * (c) Copyright 1986 HEWLETT-PACKARD COMPANY * * To anyone who acknowledges that this file is provided "AS IS" * without any express or implied warranty: * permission to use, copy, modify, and distribute this file * for any purpose is hereby granted without fee, provided that * the above copyright notice and this notice appears in all * copies, and that the name of Hewlett-Packard Company not be * used in advertising or publicity pertaining to distribution * of the software without specific, written prior permission. * Hewlett-Packard Company makes no representations about the * suitability of this software for any purpose. */ /* SPECTRUM_ID: @(#)memchr.s 37.4 86/04/23 */ /* * memchr(s, c, n) * * returns pointer to first occurrence of char c * in first n characters of memory area s, * or null if c does not occur. */ #include "DEFS.h" #define FROM arg0 #define CHAR arg1 #define COUNT arg2 #define TEMP1 r19 ENTRY(memchr) comb,<= COUNT,r0,memchrexit /* return if count is zero */ copy r0,ret0 /* null if c not found in n chars */ depi 0,23,24,CHAR /* make char unsigned */ ldbs,ma 1(FROM),TEMP1 memchrloop: comb,=,n TEMP1,CHAR,memchrequal addib,<> -1,COUNT,memchrloop ldbs,ma 1(FROM),TEMP1 b,n memchrexit memchrequal: ldo -1(FROM),ret0 memchrexit: EXIT(memchr)