Извините, я прихожу так поздно, но однажды у меня была точно такая же проблема, и это стало повторяющейся проблемой, которая продолжала возвращаться ко мне. В моем случае это был телефон на процессоре семейства 8051, и я полностью исчерпал ПЗУ (код). Он возвращался ко мне, потому что руководство продолжало запрашивать новые функции, поэтому каждая новая функция становилась двухэтапной. 1) Оптимизируйте старые вещи, чтобы освободить место. 2) Реализуйте новую функцию, используя только что созданную мной комнату.
Существует два подхода к оптимизации. Тактический и Стратегический. Тактическая оптимизация экономит несколько байтов за раз с идеей микрооптимизации. Я думаю, что вам нужна стратегическая оптимизация, которая предполагает более радикальное переосмысление того, как вы делаете вещи.
Что-то, что я помню, сработало для меня и могло бы сработать для вас;
Посмотрите на суть того, что должен делать ваш код, и попытайтесь выявить некоторые действительно сильные гибкие примитивные операции. Затем перестройте код верхнего уровня, чтобы он вообще ничего не делал, кроме вызова примитивов. В идеале используйте подход, основанный на таблицах, ваша таблица содержит такие вещи, как; Состояние ввода, событие, состояние вывода, примитивы ... Другими словами, когда происходит событие, ищите ячейку в таблице для этого события в текущем состоянии. Эта ячейка сообщает вам, какое новое состояние нужно изменить (необязательно) и какие примитивы (если есть) выполнить. Вам может потребоваться несколько наборов состояний / событий / таблиц / примитивов для разных слоев / подсистем.
Одним из многих преимуществ этого подхода является то, что вы можете думать о нем как о создании собственного языка для вашей конкретной задачи, в котором вы можете очень эффективно (т.е. с минимальным дополнительным кодом) создавать новые функциональные возможности, просто изменяя таблицу.
Извините, я опоздал на месяцы, и у вас, вероятно, не было времени сделать что-то столь радикальное. Насколько я знаю, вы уже использовали подобный подход! Но мой ответ может когда-нибудь помочь кому-то, кто знает.