2021-07-25 15:54:22 +00:00
|
|
|
TEXT memcmp(SB),$0
|
2014-02-01 09:31:41 +00:00
|
|
|
|
2021-07-25 15:54:22 +00:00
|
|
|
MOVQ n+16(FP), BX
|
|
|
|
CMPQ BX, $0
|
2014-02-01 09:31:41 +00:00
|
|
|
JEQ none
|
|
|
|
MOVQ RARG, DI
|
|
|
|
MOVQ p2+8(FP), SI
|
|
|
|
CLD
|
|
|
|
MOVQ DI, CX
|
|
|
|
ORQ SI, CX
|
|
|
|
ANDL $3, CX
|
|
|
|
JNE c3
|
|
|
|
/*
|
|
|
|
* first by longs
|
|
|
|
*/
|
|
|
|
|
2021-07-25 15:54:22 +00:00
|
|
|
MOVQ BX, CX
|
2014-02-01 09:31:41 +00:00
|
|
|
SHRQ $2, CX
|
|
|
|
|
|
|
|
REP; CMPSL
|
|
|
|
JNE found
|
|
|
|
|
|
|
|
/*
|
|
|
|
* then by bytes
|
|
|
|
*/
|
|
|
|
ANDL $3, BX
|
|
|
|
c3:
|
2021-07-25 15:54:22 +00:00
|
|
|
MOVQ BX, CX
|
2014-02-01 09:31:41 +00:00
|
|
|
REP; CMPSB
|
|
|
|
JNE found1
|
|
|
|
|
|
|
|
none:
|
|
|
|
MOVQ $0, AX
|
|
|
|
RET
|
|
|
|
|
|
|
|
/*
|
|
|
|
* if long found,
|
|
|
|
* back up and look by bytes
|
|
|
|
*/
|
|
|
|
found:
|
|
|
|
MOVL $4, CX
|
|
|
|
SUBQ CX, DI
|
|
|
|
SUBQ CX, SI
|
|
|
|
REP; CMPSB
|
|
|
|
|
|
|
|
found1:
|
|
|
|
JLS lt
|
|
|
|
MOVQ $-1, AX
|
|
|
|
RET
|
|
|
|
lt:
|
|
|
|
MOVQ $1, AX
|
|
|
|
RET
|