diff --git a/WEGA/contrib/lcc/lib/libc/u8k/gen/memcmp.s b/WEGA/contrib/lcc/lib/libc/u8k/gen/memcmp.s new file mode 100644 index 0000000..0fc03fe --- /dev/null +++ b/WEGA/contrib/lcc/lib/libc/u8k/gen/memcmp.s @@ -0,0 +1,41 @@ +// +// memcmp - compares its arguments, looking at the first n characters only, +// and returns an integer less than, equal to, or greater than 0, +// according as s1 is lexicographically less than, equal to, or +// greater than s2. +// +// Input: s1 and s2 - the strings to compare +// n - maximum number of bytes to compare +// +// Output: 0 if s1 == s2 +// <0 if s1 < s2 +// >0 if s1 > s2 +// + .seg + + sp := r15 + SP := rr14 + + .psec + .code +_memcmp:: + { + ldm r2,|_stkseg+4|(sp),#5 // rr2 = s1 + // rr4 = s2 + // r6 = n + cp r7,#0 + jr le,~reteq + cpsirb @rr2,@rr4,r6,ne + jr z,~noteq +~reteq: // return(0) (s1 == s2) + xor r2,r2 + ret +~noteq: + jr ult,~retlt +~retgt: // return(1) (s1 > s2) + ldk r2,#1 + ret +~retlt: // return(-1) (s1 < s2) + ld r2,#-1 + ret + }