....
int strcmp1(const char *cs, const char *ct)
{
int res;
asm ("\n"
"1: move.b (%0)+,%2\n" /* get *cs */
" jeq 2f\n" /* end of first string? */
" cmp.b (%1)+,%2\n" /* compare *ct */
" jeq 1b\n" /* if equal, continue */
" jra 3f\n" /* else skip to tail */
"2: cmp.b (%1)+,%2\n" /* compare one last byte */
"3: subx.l %2, %2\n" /* -1 if borrow, 0 if not */
" jls 4f\n" /* if set, z is from sub.b */
The subx will set Z unless C was set.
So that doesn't seem right.
Clearly my brain was asleep earlier.
subx will clear Z not set it.
David
-
Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK
Registration No: 1397386 (Wales)