1 TEXT strchr(SB), $0 2MOVW R1, 0(FP) 3 MOVB c+4(FP), R4 // little endian, 4(FP) instead of 7(FP) 4 MOVW s+0(FP), R3 5 6 BEQ R4, l2 7 8/* 9 * char is not null 10 */ 11l1: 12 MOVB (R3), R1 13 ADDU $1, R3 14 BEQ R1, ret 15 BNE R1,R4, l1 16 JMP rm1 17 18/* 19 * char is null 20 * align to word 21 */ 22l2: 23 AND $3,R3, R1 24 BEQ R1, l3 25 MOVB (R3), R1 26 ADDU $1, R3 27 BNE R1, l2 28 JMP rm1 29 30l3: 31 MOVW $0xff000000, R6 32 MOVW $0x00ff0000, R7 33 34l4: 35 MOVW (R3), R5 36 ADDU $4, R3 37 AND $0xff,R5, R1 /* byte 0 */ 38 AND $0xff00,R5, R2 /* byte 1 */ 39 BEQ R1, b0 40 AND R7,R5, R1 /* byte 2 */ 41 BEQ R2, b1 42 AND R6,R5, R2 /* byte 3 */ 43 BEQ R1, b2 44 BNE R2, l4 45 46rm1: 47 ADDU $-1,R3, R1 48 JMP ret 49 50b2: 51 ADDU $-2,R3, R1 52 JMP ret 53 54b1: 55 ADDU $-3,R3, R1 56 JMP ret 57 58b0: 59 ADDU $-4,R3, R1 60 JMP ret 61 62ret: 63 RET 64