It's time to do some work on you're compiler. It generates the same code it did 20 years ago. I have to do tricks, instead of writing normal portable code, to get it to generate good code or just use inline assembler. This of course is nothing new, I've been telling you this for almost a decade. Keep in mind that all Intel processors are little endian and that you're compiler generates big endian code, why? You should at least offer a compiler switch to select endianness. Why don't you support C++ and MISRA? Oh and BTW IAR does all of the above TODAY! So clearly they haven't been standing still. (Notice who wrote the paper.)
www.eetimes.com/.../The-Inefficiency-of-C--Fact-or-Fiction-
I have done countless projects with the 8051 family over more than 25 years.
And you appear to be on a mission to prove that despite all conventional wisdom to the contrary, a person can actually be wrong about a fundamental aspect of their field of work for all those 25 years --- and proud of it.
Can you explain how Keil is and has been the only compiler vendor for the 8051 that has tried to make it little endian inspite of its own architecture and history while everyone else has implemented it correctly?