Цитата(Сергей Борщ @ Mar 20 2014, 13:33)

Создайте .map (ключ для gcc -Wl.-Map=имя_файла). Рассмотрите его внимательно. В для каждой притянутой из библиотеки функции написано, какая функция ее вызвала. Не знаю про Xilinx, но обычно gcc-реализация (s)scanf тянет за собой менеджер памяти и кучу прочих вещей. Как раз где-то на 50К.
Я сгенерировал map-файл, но сильно закапываться в него не стал. Как я понял, в .text попадает целиком не вся библиотека ввода/вывода, а только нужные функции. Верно?
Цитата(scifi @ Mar 21 2014, 06:18)

Кстати, как-то раз взял из тырнета чей-то sprintf() - получилось около 4К байт кода и никаких malloc(). С тех пор повсеместно использую. Есть ли что-то подобное для sscanf? Поиск в гугле навскидку результата не дал.
Для microBlaze специально сделан так называемый xil_printf, который не поддерживает плавающую точку. Он отъедает около 3-х килобайт.
Однако для sscanf такой халявы нет.
Мне в общем-то не нужен парсинг строк с вещественными числами с фиксированной точкой, а также с тестовыми подстроками.
Нет ли у кого? Не хотелось бы самому это писать.
Цитата(megajohn @ Mar 21 2014, 06:24)

да я вообще полагал, что sprintf sscanf должны работать только на стеке. И вроде так и есть в IAR. Или нет ?
В GNU GCC не на стеке.
Цитата(Сергей Борщ @ Mar 21 2014, 06:55)

В ИАРе может и так. А в комплекте gcc в качестве стандартной библиотеки идет newlib, которая изначально заточена под большие компы, многопоточность и буферизованный вывод. Только недавно в нех появилась возможность собирать "нано"-версию. Возможно
это чем-то поможет автору ветки. Я код newlib внимательно не изучал, видел лишь имена функций, которые подтягивает sscanf и ssprintf. Вроде как printf использует динамическую память при первом вызове для создания структур потокового ввода-вывода и их буферов.
В Xilinx SDK newlib, к сожалению, не поставляется.
Всем большое спасибо за ответы.