From: Philipp K. K. <pk...@sp...> - 2009-03-09 22:55:25
|
Hynek Sladky schrieb: > I have function for caseless compare: > int strnicmp (const char *s1, const char *s2, int maxlen) { > [...] > ; genIfx > ld a,e ;overwriting A!!! > or a,d > jr Z,00114$ > ; genIfx > xor a,a > or a,c > jr Z,00114$ > ; genIfx > xor a,a > or a,b > jr Z,00114$ > ; genIfx > or a,a ;seems wants to use A??? > jp NZ,00112$ > > It seems that it wants to use previously computed result stored in A but > later this is overwritten. What to do to get correctly compiled program? > > Thanks > Hynek Sladky I just tried with sdcc 2.8.9 #5392. I compiled your function using sdcc -mz80 test.c. I could not reproduce the bug. I get the following code: ;test.c:10: } while (maxlen && c1 && c2 && c1==c2); ld a,e or a,d jr Z,00114$ xor a,a or a,c jr Z,00114$ xor a,a or a,b jr Z,00114$ xor a,a or a,-5 (ix) jp NZ,00112$ 00114$: Philipp |