Разработка, производство и продажа радиоэлектронной аппаратуры
|
Карта сайта
|
Пишите нам
|
В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:
jobsmp@pochta.ru
Телесистемы
|
Электроника
|
Конференция «Микроконтроллеры и их применение»
Люди, как просто сделать так, чтобы хватало памяти? :) Стек налазит.
Отправлено
Vladimir Ljaschko
16 января 2008 г. 15:03
Составить ответ
|
Вернуться на конференцию
Ответы
Строки есть? Много? Можно ужаться немного, если скомбинировать повторяющиеся части.
—
AlexD
(16.01.2008 15:32:54
193.200.21.5
,
пустое
)
Строк нет, в основном неструктурированные переменные и математика. Пожалуй, можно плавучку поделить на отдельные функции. Уже два байта сэкономил. Осталось 0x65 :)
—
Vladimir Ljaschko
(16.01.2008 15:40:40
194.158.204.49
,
пустое
)
А EEPROM есть? Можно туда переменные толкать, которые используются очень редко :)
—
Звероящер
(16.01.2008 15:53:48
217.117.89.75
,
пустое
)
Ага, только они слабо структурированные. А по одной переменной не очень удобно :)
—
Vladimir Ljaschko
(16.01.2008 16:10:12
194.158.204.49
,
пустое
)
В смысле данные
—
Vladimir Ljaschko
(16.01.2008 16:10:33
194.158.204.49
,
пустое
)
Стек налазит- это предположение? Увеличить размер стека в сфойствах проекта ?
—
++
(16.01.2008 15:31:32
212.45.31.226
,
пустое
)
Нет, это факт. Вижу в отладчике.
—
Vladimir Ljaschko
(16.01.2008 15:42:47
194.158.204.49
,
пустое
)
Можно попробывать в функции передавать указатели вместо переменных. Позволит избежать дублирования переменных. Но неприятность: в функции переменная может измениться.
—
MikeR
(16.01.2008 15:31:22
80.79.176.57
,
пустое
)
Вот хорошо придумал, теперь в регистрах (или стеке) вместо значений будут указатели на значения. Офигительная экономия.
—
AlexD
(16.01.2008 15:47:50
193.200.21.5
,
пустое
)
Кстати, я в своё время здорово сэкономил ресурсы, когда переходы по case, и соответственно вызовы функций по case, заменил на массив указателей на функции...
—
Звероящер
(16.01.2008 16:28:52
217.117.89.75
,
пустое
)
Это другой случай. Требуется ОЗУ экономить, а не Flash.
—
AlexD
(16.01.2008 19:45:33
212.220.208.22
,
пустое
)
Как насчет понятия куча?
—
M@RS
(16.01.2008 15:24:17
62.80.161.116
,
пустое
)
Понятие известно :) Основной конфликт за память между копией сетапа в ОЗУ и самой навороченной функцией с плавучкой - то есть куча не особенно катит.
—
Vladimir Ljaschko
(16.01.2008 15:27:41
194.158.204.49
,
пустое
)
А нафига хранить сетап в ОЗУ? Храни во флеше.
—
vmp
(16.01.2008 16:36:22
87.245.155.195
, 186 байт)
угу, это мысль. Правда, есть ограничения - статистика, которую я тоже включи в сетап, и уменьшение надежности.
—
Vladimir Ljaschko
(16.01.2008 19:57:32
194.226.120.28
,
пустое
)
угу, это мысль. Правда, есть ограничения - статистика, которую я тоже включи в сетап, и уменьшение надежности.
—
Vladimir Ljaschko
(16.01.2008 19:54:25
194.226.120.28
,
пустое
)
посчитать
—
mandigit
(16.01.2008 15:07:51
89.175.169.67
,
пустое
)
А потом? :) Согласился сделать небольшие изменения в проекте, живущем 3 года. А вообще-то IAR MSP оптимизирует переменные, как Keil для 51, располагая их в одинаковые ячейки, или если создана, то создана, и место занимает?
—
Vladimir Ljaschko
(16.01.2008 15:12:16
194.158.204.49
,
пустое
)
А потом стек поджать под расчеты
—
mandigit
(16.01.2008 15:20:42
89.175.169.67
, 300 байт)
Да, систему define'ов знаю, и использую. Что ж, много интересной работы - пересмотреть все исходники...
—
Vladimir Ljaschko
(16.01.2008 15:24:10
194.158.204.49
,
пустое
)
в редакторах иногда бывает "поиск во всех файлах"
—
mandigit
(16.01.2008 15:29:41
89.175.169.67
,
пустое
)
Эээ, брат, не путай компилированный стек Кейла для 51х, и нормальный стек МСП
—
AlexD
(16.01.2008 15:15:17
193.200.21.5
,
пустое
)
А как это от платформы зависит? Если я вручную могу сделать "компилированный стек", то почему это не может сделать компилятор автоматически?
—
Vladimir Ljaschko
(16.01.2008 15:20:14
194.158.204.49
,
пустое
)
Уфф, что за день сёдня... Компилированный стек делается на 51х ради ускорения (в связи с особенностями архитектуры), никакой реальной экономии по сравнению с нормальным стеком НЕТ.
—
AlexD
(16.01.2008 15:28:53
193.200.21.5
,
пустое
)
Не понял. Чем компилированный стек отличается от использования одной ячейки памяти в разных непересекающихся частях программы?
—
Vladimir Ljaschko
(16.01.2008 15:31:18
194.158.204.49
,
пустое
)
Компилированный стек для локальных переменных, т.к. компилятор может просчитать (за исключением косвенных вызовов) использование памяти (в случае нормального стека это получается автоматически и ничего считать не надо). В случае глобальных переменных он это сделать не в состоянии.
—
AlexD
(16.01.2008 15:43:46
193.200.21.5
,
пустое
)
Теперь понял - чудес не бывает.
—
Vladimir Ljaschko
(16.01.2008 15:50:57
194.158.204.49
,
пустое
)
Ответ: Тем что на 51 стека нет. И его приходится эмулировать.
—
Артем
(16.01.2008 15:34:15
209.160.64.220
,
пустое
)
Стек есть, но работа с ним сильно медленнее чем просто с памятью.
—
AlexD
(16.01.2008 15:39:45
193.200.21.5
,
пустое
)
Ответ: DPTR? Это не стек.
—
Артем
(16.01.2008 15:45:39
209.160.64.220
,
пустое
)
Нет, это тот, в котором адреса возвратов сохраняются :-)
—
AlexD
(16.01.2008 15:52:2
193.200.21.5
,
пустое
)
Ответ: Адресоваться относительно него все равно нельщя. 51- редкостный отст...{+}
—
Артем
(16.01.2008 16:13:7
209.160.64.220
, 170 байт)
Всё можно. Только мееедленноо. Поинтересуйся, например как работают реентерабельные функции (reentran).
—
AlexD
(16.01.2008 16:15:39
193.200.21.5
,
пустое
)
+1. Только для 51 IAR кошернее с такими извратами работает, нежели Keil.
—
Звероящер
(16.01.2008 16:36:25
217.117.89.75
,
пустое
)
Ответ: ЭТО КАК?
—
Артем
(16.01.2008 15:13:56
209.160.64.220
,
пустое
)
Сократить расход памяти!
—
AlexD
(16.01.2008 15:06:31
193.200.21.5
,
пустое
)
Ответ: Вы хотите остановить научный прогресс?
—
Артем
(16.01.2008 15:12:0
209.160.64.220
,
пустое
,
ссылка
)
На что он налазит?
—
Dr.Alex
(16.01.2008 15:04:31
62.231.6.117
,
пустое
)
На переменные, ессно.
—
Vladimir Ljaschko
(16.01.2008 15:05:40
194.158.204.49
,
пустое
)
Если там переменные, то что в стеке? :-р
—
Dr.Alex
(16.01.2008 15:06:30
62.231.6.117
,
пустое
)
Ответ: Тоже переменне. Но другие. К примеру статические.
—
Артем
(16.01.2008 15:07:29
209.160.64.220
,
пустое
)
В стеке статические? :-)
—
Dr.Alex
(16.01.2008 15:07:56
62.231.6.117
,
пустое
)
Ответ: В стеке локальные.
—
Артем
(16.01.2008 15:09:54
209.160.64.220
, 136 байт)
Отправка ответа
Имя*:
Пароль:
E-mail:
Тема*:
Сообщение:
Ссылка на URL:
URL изображения:
если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 63:
Перейти к списку ответов
|
Конференция
|
Раздел "Электроника"
|
Главная страница
|
Карта сайта
Web
telesys.ru