Для всех ядер - это вы уж слишком многого от меня хотите.
У меня и компиляторов таких нет.

Тем не менее, Вы уже второй раз утверждаете, что писали с оглядкой на Cortex? Лично я воспринял это, как то, что Вы знаете, что творите.
QUOTE
из ваших высказываний так и не понял, что бы такого можно было улучшить в моем коде.
Хорошо,не затрагивая, так сказать основ, только то, что сразу режет глаз.
CODE
void si16toad (int16_t Number, char * StrBuf)
{
char Sign = ' '; // Зачем-то завели малополезную переменную 'Sign'
if (Number > 0) Sign = '+';
if (Number < 0) {
Sign = '-';
Number = -Number;
}
StrBuf[6] = '\0';
signed char i = 5; // Cortex говорите? Тогда за не 32 bit переменные, где в этом нет
// небходимости по рукам надо давать. Да и сама переменная лишняя - только команд push/pop добавляет
// А за использование "массивов" вместо указателей - еще один раз
do {
StrBuf[i--] = Number % 10 + '0';
Number /= 10; // 32 bit контроллер? Тогда зачем его беднягу опять без всякой надобности
// заставлять с 16bit 'Number' работать? Сразу несколько лишних команд в цикле
} while (Number);
StrBuf[i] = Sign;
// Цикл заполнения пробелами не более, чем 4x ,байтиков. А как это на 32битниках, тем более на
// Cortex это можно сделать одной командой?( ну ладно двумя - одна регистр пробелами заполняет)
for (i--; i >= 0; i--) StrBuf[i] = ' ';
}
{
char Sign = ' '; // Зачем-то завели малополезную переменную 'Sign'
if (Number > 0) Sign = '+';
if (Number < 0) {
Sign = '-';
Number = -Number;
}
StrBuf[6] = '\0';
signed char i = 5; // Cortex говорите? Тогда за не 32 bit переменные, где в этом нет
// небходимости по рукам надо давать. Да и сама переменная лишняя - только команд push/pop добавляет
// А за использование "массивов" вместо указателей - еще один раз
do {
StrBuf[i--] = Number % 10 + '0';
Number /= 10; // 32 bit контроллер? Тогда зачем его беднягу опять без всякой надобности
// заставлять с 16bit 'Number' работать? Сразу несколько лишних команд в цикле
} while (Number);
StrBuf[i] = Sign;
// Цикл заполнения пробелами не более, чем 4x ,байтиков. А как это на 32битниках, тем более на
// Cortex это можно сделать одной командой?( ну ладно двумя - одна регистр пробелами заполняет)
for (i--; i >= 0; i--) StrBuf[i] = ' ';
}