#include "setarch.h" #include "defines.h" #if defined (__H8300SX__) .global _strcmp _strcmp: mov.l er0,er2 loop: mov.b @er2+,r0l beq eos sub.b @er1+,r0l beq loop exts.l #2,er0 rts eos: sub.b @er1,r0l exts.l #2,er0 rts #else .section .text .align 2 .global _strcmp _strcmp: MOVP A0P,A2P MOVP A1P,A3P .L5: mov.b @A2P+,A1L beq .L3 mov.b @A3P+,A0L cmp.b A0L,A1L beq .L5 #ifdef __NORMAL_MODE__ sub #1,A3P #else subs #1,A3P #endif .L3: mov.b @(-1,A2P),A0L mov.b @A3P,A1L sub.b A1L,A0L ; We have to sign extend the result to 32bits just in case ; we are using 32bit integers. #ifdef __H8300H__ exts.w r0 exts.l er0 #else #ifdef __H8300S__ exts.w r0 exts.l er0 #else bld #7,r0l subx r0h,r0h subx r1l,r1l subx r1h,r1h #endif #endif rts .end #endif