Windows NT 4.0 source code leak
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

74 lines
1.5 KiB

// TITLE("strcmp")
//++
//
// Copyright (c) 1994 IBM Corporation
//
// Module Name:
//
// strcmp.s
//
// Routine Description:
//
// This function lexically determines two blocks of memory and
// returns an integer indicating order.
// STRCMP compares two strings and returns an integer
// to indicate whether the first is less than the second, the two are
// equal, or whether the first is greater than the second.
//
// Comparison is done byte by byte on an UNSIGNED basis, which is to
// say that Null (0) is less than any other character (1-255).
//
// Author:
//
// Jeff Simon (jhs) 03-Aug-1994
//
// Environment:
//
// User or Kernel mode.
//
// Revision History:
//
// Includes
#include <kxppc.h>
//
// int strcmp (
// const char * src,
// const char * dst
// )
//
// Arguments:
//
// STR1 (r.3) - A pointer to the first string
//
// STR2 (r.4) - A pointer to the second string
//
// Return Value:
//
// < 0 if STR1 < STR2
// = 0 if STR1 = STR2 for LNGTH bytes, or if LNGTH == 0
// > 0 if STR1 > STR2
//
//
LEAF_ENTRY(strcmp)
lbz r5,0(r3) # init r5
lbz r6,0(r4) # init r6
or r9,r3,r3 # cp ptr
L..3:
cmpi 0x7,0x0,r6,0x0 # end of string ?
subf. r3,r6,r5 # lexical compare
bc 0xc,0x1e,L..4 # b, if null detected
bne L..4 # b, if not equal
lbzu r5,1(r9) # next char
lbzu r6,1(r4) # next char
b L..3 # loop
L..4:
beqlr
addi r3,r0,-1 #?I hate doing this, but intel
bltlr #?ret -1, +1, so ...
addi r3,r0,1 #?
LEAF_EXIT(strcmp)