I did not use any standard sdcc libary. I got my itoa function from MSVC runtime c source code. Compared with the itoa source code in sdcc lib, it only has difference in the last "swap value" step, where Microsoft code uses pointers to compare. It used to be correct with 3.0.0 version. But failed to swap in recent versions. For example, "192" is output as "291" now.
SDCC : mcs51/gbz80/z80/z180/r2k/ds390/pic16/pic14/TININative/ds400/hc08 3.1.2 #7237 (Jan 18 2012) (MINGW32)
command line used: C:\SDCC\BIN\sdcc misc.c -mz80 -c --std-c99 --codeseg CODE