ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
20 апреля
1264750 Топик полностью
Nikolay_Po (03.12.2022 02:17, просмотров: 258) ответил bnb62 на Согласился вдруг с расхожим: "выползти из ассемблера в Си без травм не получится". Так и будешь писать асм средствами Ц. :) Смотрю на чуждый код сокрушенно. Надо подобное сделать, но страшновато. Ладно макросы va_arg(), va_start() и va_end(), но там malloc(size), или если RTOS, pvPortMalloc(size)... Куда податься неучу? хбз. :(
Насчёт malloc() было дело. Камень PIC16F, памяти под массивы данных и переменные не хватало для моей задумки. Одномоментно было нужно немного памяти, но каждой функции выделить свой массив временных данных - не хватало. 

Сначала начал придумывать переиспользование памяти тбъединениями структур. Но не кратно ложилось. Код стал трудночитаемым. Плюнул и в первый раз в жизни использовал malloc() и free(). Всё заработало. Перед сменой режима, действовавший режим делает free(), а новый - malloc() и всё работает внутри своих пространств имён, будто бы памяти на всех хватает.