User Tag List

Показано с 1 по 10 из 50

Тема: В чем смысл раздельных областей программы и данных

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #40

    Регистрация
    09.01.2010
    Адрес
    г. Москва
    Сообщений
    271
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    По поводу самомодифицирующегося кода (я упомянул выше про ограниченные команды i/o): был процессор (DSP), в котором у команд in/out простой до неприличия синтаксис: cmd addr, где addr - 16-бит int. Все. Ни тебе косвенной адресации, ничего. Только константный адрес, который ессесно был следующим словом после кода самой команды в памяти программ.
    Конечно, разработчики предполагали, что на шине ввода/вывода будет ряд устройств со своими регистрами по определенным адресам, и все будет ок. Хрен! Вот понадобилось нам туда подключить а) устройства со мноооожеством регистров (больше сотни) б) ОЗУ (да, извращение, но что делать) в) EEPROM и т.п. Скорость обращения к данному пространству не очень важна, но блин. Для обращения к памяти в 64к, повешенной на i/o надо ровно 64к памяти программ (типа in 0x0000; in 0x0001 и т.д.).
    Архитектура гарвардская. Флэш можно перепрограммировать теоретически без программатора следующим образом: загружаем в бут-память (2к слов) нечто через SPI (SPI соединяем в первом приближении с SCI). Переключаем флэш-память программ на бут (все 64к памяти программ недоступны для исполнения, исполняются только 2к бут-памяти). Появляются команды модифицирования массива flash- памяти программ. Модифицируем память программ в части адресов команд in/out (там флэш-массив модифицируется только блоками по 256 слов, а стирается/очищается еще более крупными вроде бы). Акробатический трюк - обратное переключение с сохранением всех регистров.... Вообщем крутизна.
    И тут вспоминаем про то, что в данном процессоре маленькая часть ОЗУ (256 слов) умеет быть как памятью данных, так и памятью программ (но одновременно - только одним типом). Видимо, разработчики процессора тоже о чем-то думали. Дальше - просто - в эту память в режиме данных копируем функцию чтения порта. Потом меняем определенное слово, соотв. адресу порта. Потом - переключаем ее на работу как память программ и CALL our_magic_io_fn. Медленно, конечно, но работоспособно.

    А больше и не припомню случаев, когда был реально нужен самомодифицирующийся код. Может быть кто-то что-то напишет на эту тему? Спектрум вроде распологал к тому, чтобы программировать виртуозно, да и программисты тогда были не сплошь академические и "правильные" (как я ).
    Для справки: описываемый проц - TMS320LF2407A (ну вся семейка TMS320xF24XX) фирмы Texas Instruments. Очень своеобразный проц, возможно это связано с тем, что само ядро (TMS320) - разработки начала 90-х если не 80-х. Одна система прерываний чего стоит! Однако по стабильности и надежности - не припомню более надежного. За более чем 7 лет работы с ним - ни одного случая зависания/сброса/сбоя/ошибки вычислений по вине железа (а работал он в очень жестких условиях по ЭМИ, да и по питанию тоже иногда). Вот что значит отлаженное ядро. Да и errata всего-то странички 2-3, причем в начещественных вещах.
    Последний раз редактировалось e2e4; 15.06.2010 в 18:28.

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

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

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

Похожие темы

  1. Базы данных на Спекки
    от Ewgeny7 в разделе Софт
    Ответов: 18
    Последнее: 06.06.2019, 17:30
  2. Суперпаковщик данных BitBuster
    от Aprisobal в разделе Программирование
    Ответов: 35
    Последнее: 18.10.2010, 08:02
  3. В чем смысл разделых полей памяти
    от Gryphon в разделе Для начинающих
    Ответов: 31
    Последнее: 20.05.2010, 18:12
  4. База данных по модулям МПИ
    от KALDYH в разделе ДВК, УКНЦ
    Ответов: 0
    Последнее: 10.06.2009, 17:39

Ваши права

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