-int strncmp(const uint8_t *b1, const uint8_t *b2, size_t len)
-{
- int diff=0;
-
-
- for (;len && (*b1) && (*b2) && !(diff); --len) {
- diff = b1[i] - b2[i];
- }
-
- return diff;
-}
-
-
-strncmp.s:
+.text
+strncmp:
ldis r5, 0 ;
-:strfor
+strfor:
ldis r0, 0 ;
-ldb r0, r1 ; r0 = (*b1)
-ldb r5, r2 ; r5 = (*b2)
-addi r3, 0 ; len == 0
-addinq r0, 0 ; (*b1) == 0
-addinq r5, 0 ; (*b2) == 0
+ldb r0, 0(r1)
+ldb r5, 0(r2) ; r5 = (*b2)
+cmpi r3, 0 ; len == 0
+cmpinq r0, 0 ; (*b1) == 0
+cmpinq r5, 0 ; (*b2) == 0
ldiseq r0,0 ;
reteq ;
sub r0, r0, r5 ; diff = (*b1)-(*b2)
-addi r0,0 ; diff!=0
+cmpi r0, 0 ; diff!=0
retnq ;
-addi r1,1 ; ++b1
-addi r2,1 ; ++b2
-subi r3,1 ; ++len
-branch strfor ;
+addi r1, r1 ,1 ; ++b1
+addi r2, r2, 1 ; ++b2
+subi r3, r3, 1 ; --len
+br strfor ;