f4bce89eef6c78dbd9ecfd50df87ac51be88ff99
[calu.git] / 2_isa / src / strncmp.s
1 strncmp:
2
3 ldis r5, 0      ;
4
5 strfor:
6 ldis r0, 0      ;
7 ldb r0, 0(r1)   ; r0 = (*b1)
8 ldb r5, 0(r2)   ; r5 = (*b2)
9 cmpi r3, 0      ; len == 0
10 cmpinq r0, 0    ; (*b1) == 0
11 cmpinq r5, 0    ; (*b2) == 0
12
13 ldiseq r0,0     ;    
14 reteq           ;
15
16 sub r0, r0, r5  ; diff = (*b1)-(*b2)
17 cmpi r0, 0      ; diff!=0
18 retnq           ;
19 addi r1, r1 ,1  ; ++b1
20 addi r2, r2, 1  ; ++b2
21 subi r3, r3, 1  ; --len
22 branch strfor   ;