Важная информация

User Tag List

Страница 1 из 4 1234 ПоследняяПоследняя
Показано с 1 по 10 из 34

Тема: Определить размер программы

  1. #1
    Member
    Регистрация
    03.04.2012
    Адрес
    г. Тюмень
    Сообщений
    51
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Определить размер программы

    Доброго времени суток, форумчане.
    Четвертые сутки я думаю и гуглю в свободное время о проблеме определения размера программы. Есть у меня проц, память, блок ПЗУ на 24C256 в роли диска... На этом "диске" хранятся программы. Диск разбивается на сектора по 256 байт. Если в начале сектора встречаем преамбулу - это файл. Далее его имя, тип и размер. Все работает замечательно. Программы пишу на большом компе и в листинге я вижу занимаемый объем. Тоже никаких проблем.
    Но. Если я загрузил программу или даже просто текстовик и потом в оперативке его решил изменить... Если он увеличится - ничего страшного, т.к. перед загрузкой я освобождаю ОЗУ и по большому скоплению нулей (пусто) могу почти всегда определить его конец. А если уменьшится? После его логического конца может оставаться большой объем данных, более не нужных для дальнейшего сохранения на "диск". Дописывать в конце программы преамбулу тоже получается только на большом компе. Может кто-то сталкивался с подобными проблемами? Система у меня не на Z80, но разницы я особо не вижу...

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2
    Super Moderator Аватар для Alex Rider
    Регистрация
    07.02.2008
    Адрес
    г. Рязань
    Сообщений
    2,908
    Спасибо Благодарностей отдано 
    29
    Спасибо Благодарностей получено 
    89
    Поблагодарили
    31 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Для каждой платформы и языка программирования на ней существуют (или не существуют) свои методы определения размера программы. Поделись, пожалуйста, с нами этими сведениями.
    ZX Evolution Rev C + ZXM-SoundCard Extreme + NeoGS.

  4. #3
    Master
    Регистрация
    19.11.2012
    Адрес
    г. Луганск
    Сообщений
    698
    Спасибо Благодарностей отдано 
    29
    Спасибо Благодарностей получено 
    82
    Поблагодарили
    55 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от alm604 Посмотреть сообщение
    по большому скоплению нулей

  5. #4
    Member
    Регистрация
    03.04.2012
    Адрес
    г. Тюмень
    Сообщений
    51
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Счас заплюёте))) MCS-51 и переписанный PAULMON-2. 0000H-7FFFH - EEPROM (PSEN) и RAM (WR/RD), 8000H-FCFFH - NVRAM, дальше периферия. I2C для 24C256 на порту 1 (GPIO, по сути). Программа или просто текст (или исходный код) переносится из I2C EEPROM в RAM с 2000H и выше. Потолок, получается 7FFFH. И вот когда я файл в ОЗУ переписал (к примеру, текст), я еще в курсе где его конец, а когда я его укоротил - уже не знаю.
    На большом компе в заготовке под эти программы в конце у меня записано что-то типа:
    Код:
    ret                                     ; Возврат в монитор
    ORG 55H, AAH, FFH, FEH        ; Преамбула
    END.
    И при загрузке в ОЗУ это, конечно, отбрасывается. Заводить счетчик введенных символов (и удаленных), мне кажется не лучшим выходом.

    - - - Добавлено - - -

    Да понимаю я, что эти нули могут быть нужны... Но пока программ всего несколько, так что я справлюсь и ручным подсчетом. Но хотелось бы прям кнопочку Save и файл улетел в EEPROM.

    - - - Добавлено - - -

    Чтоб еще лучше представлять девайс:
    http://zx-pk.ru/threads/26190-proshu...a-gal16v8.html Тут я его начал делать. Тогда софтом был просто бейсик. Позже мне его стало мало и я подзабросил платку. Потом нашел PAULMON-2 и интерес снова проснулся. Пишу "драйвер" "файловой системы"))) Читать получается, записывать тоже. Но адреса приходится вводить каждый раз. Иногда, просматривая память для определения фактического конца файла. Сейчас девайсина выглядит уже страшнее: https://yadi.sk/i/6oLZ4fzXypkFSДобавил два порта GPO, Два GPI, USB-COM (CH340G), декодер адреса и LCD 256*64 с графическим и текстовым режимами на основе LC7981. Там с текстом тоже беда приключилась, но это тема отдельной статьи...
    Последний раз редактировалось alm604; 17.11.2016 в 12:51. Причина: Фото не вставилось

  6. #5
    Sinclair User Аватар для Eltaron
    Регистрация
    16.01.2005
    Адрес
    Ekaterinburg
    Сообщений
    2,045
    Записей в дневнике
    7
    Спасибо Благодарностей отдано 
    143
    Спасибо Благодарностей получено 
    463
    Поблагодарили
    326 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Заводить счетчик введенных символов (и удаленных), мне кажется не лучшим выходом.
    Ну а как без счетчика? Вот только надо хранить не это, а указатель на последний байт программы - это ведь всего лишь два несчастных байта.
    Инкремент при вводе символа, декремент при удалении.
    Это позволит и от костыля с поиском "большого количества нулей" избавиться, т.к. точный размер программы всегда можно получить в одно вычитание, неважно, увеличился он или уменьшился.
    Граф Дракула наш кумир, патамушта он вомпир!
    VKINK 9 : BORDER NOT PI

  7. #6
    Member
    Регистрация
    03.04.2012
    Адрес
    г. Тюмень
    Сообщений
    51
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ну, похоже, так и придется делать... Сама проблема-то в платформе - у 51-го не так много внутреннего ОЗУ, к которому быстрый доступ есть. А внешнее через DPTR, да с его 12-ю тактами на команду... Чую, придется переходить на проц. МК для таких целей - не лучшее решение(

  8. #7
    Master
    Регистрация
    17.05.2005
    Адрес
    г. Абакан
    Сообщений
    694
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    При 12МГц не так уж и плохо 12 тактов на команду, которых не так много для обращения к ОЗУ. А не пробовал НЕ отбрасывать "преамбулу", и по ней вычислять окончание?
    Вообще подход к работе с ОЗУ в MCS-51 не такой, как в микропроцессорах.

  9. #8
    Member
    Регистрация
    03.04.2012
    Адрес
    г. Тюмень
    Сообщений
    51
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Если ее не отбрасывать, то придется сдвигать при изменении размера, что еще дольше, чем считать введенные/удаленные символы. Я понимаю, что подход другой, Z80 мне знаком. Ладно, спасибо за советы. Будем делать.

  10. #9
    Master
    Регистрация
    27.11.2013
    Адрес
    г. Санкт-Петербург
    Сообщений
    828
    Спасибо Благодарностей отдано 
    34
    Спасибо Благодарностей получено 
    128
    Поблагодарили
    108 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от alm604 Посмотреть сообщение
    Ну, похоже, так и придется делать... Сама проблема-то в платформе - у 51-го не так много внутреннего ОЗУ, к которому быстрый доступ есть. А внешнее через DPTR, да с его 12-ю тактами на команду... Чую, придется переходить на проц. МК для таких целей - не лучшее решение(
    Если не склероз: есть же 51 с 4 и меньше тактами. У того же атмела (пользуюсь - но не люблю). или у максима (в девичестве даллас). И внутренняя память ОЗУ до килобайта (примерно) и пару DPTR регистров итд...

  11. #10
    Member
    Регистрация
    03.04.2012
    Адрес
    г. Тюмень
    Сообщений
    51
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Лежит у меня MCS-251. Там примерно так же - пара DPTR, адресация шире, RAM больше и по даташиту "До 15 раз быстрее обычных MCS-51". Кроме того, в примененном мною P80C32UFPN, оказывается, тоже пара DPTR. Но, так как я эту плату сделал как раз для изучения семейства, я об этих нюансах узнал лишь недавно. Переделывать под MCS-251 пока не хочется. Задрать частоту до допустимых 33МГц желание есть, но не уверен в работоспособности UART. Пока у меня автоопределение BAUDRATE. Кажись переписывать придется. Либо цеплять внешнюю 16C550 или Z8523016. И тех и других - горсть. Но всё не покидает чувство, что надо использовать проц, а не МК и не страдать фигней))) Останавливает только удобный монитор. Под Z80 я такого пока не нашел, не говоря уж о других процах.

    - - - Добавлено - - -

    И еще огромный запас P80C552EBA, 74HC573 и кварцев на 11,0592)))))

Страница 1 из 4 1234 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. неправильный размер
    от ZEman в разделе Игры
    Ответов: 6
    Последнее: 26.07.2016, 20:16
  2. Увеличить размер PDF вложений
    от tnt23 в разделе Форум
    Ответов: 30
    Последнее: 01.08.2012, 08:20
  3. Ответов: 4
    Последнее: 05.05.2012, 22:39
  4. Размер игрового экрана Spectaculator7.01.1349
    от Constans Barron в разделе Эмуляторы
    Ответов: 7
    Последнее: 28.09.2010, 16:10
  5. Ограничение на размер картинки!
    от CHRV в разделе Форум
    Ответов: 2
    Последнее: 21.04.2005, 01:24

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •