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