TEXT memcmp(SB),$0
MOVL n+8(FP), BX
CMPL BX, $0
JEQ none
MOVL p1+0(FP), DI
MOVL p2+4(FP), SI
CLD
/*
* first by longs
*/
MOVL BX, CX
SHRL $2, CX
REP; CMPSL
JNE found
/*
* then by bytes
*/
ANDL $3, BX
MOVL BX, CX
REP; CMPSB
JNE found1
none:
MOVL $0, AX
RET
/*
* if long found,
* back up and look by bytes
*/
found:
MOVL $4, CX
SUBL CX, DI
SUBL CX, SI
REP; CMPSB
found1:
JLS lt
MOVL $-1, AX
RET
lt:
MOVL $1, AX
RET
|