User Tag List

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

Тема: Кодогенерация SDCC: пожелания об улучшении компилятора

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

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

    Регистрация
    08.05.2007
    Адрес
    Dnepropetrovsk
    Сообщений
    1,089
    Спасибо Благодарностей отдано 
    281
    Спасибо Благодарностей получено 
    70
    Поблагодарили
    49 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vitamin Посмотреть сообщение
    Потому что это не константная переменная с гарантированным для первого обращения значением. А значит лежит в секции, доступной на чтение-запись. А исходные данные лежат в секции "только на чтение". Хочешь сразу ссылаться на нужную секцию- подскажи компилятору (я вот только не помню, в С можно const писать или только в новом стандарте).
    Совершенно верно. Можно писать const. Если заменить объявление переменной на:
    Код:
    static const char s[] = "Hello world!";
    то компилятор не сгенерирует код, инициализирующий этот массив (строка будет просто храниться в исполняемом образе). Забивание строки в массив, в который разрешена запись - это поначалу была такая ошибка в моей тест-программе, но в связи с тем, что результат компиляции оказался интересным (с той точки зрения, чтобы его улучшить), я решил обратить внимание именно на этот случай.

    На самом деле можно в исполняемом файле иметь сегмент инициализированных данных, доступных на чтение/запись. Тогда даже LDIR не понадобится, но возникнут проблемы, если кто-то захочет скомпоновать файл для размещения в ПЗУ. Тогда придется генерировать как минимум инициализирующие LDIRы, которые бы скопировали исходные значения этих данных из ПЗУ в ОЗУ. Размещение программы в ПЗУ - это далеко не праздная задача. Люди делают прошивки, люди делают на базе Z80 отдельные устройства (как я в 1997); в конце концов, некоторые контроллеры памяти позволяют защитить области ОЗУ от записи. Поэтому генерация кода, работоспособного в ПЗУ - это важное свойство компилятора.
    Последний раз редактировалось Barmaley_m; 22.08.2012 в 23:37.

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

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

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

Похожие темы

  1. SDCC - Small Device C Compiler
    от Valen в разделе Программирование
    Ответов: 52
    Последнее: 06.04.2012, 20:44
  2. Конструктор для компилятора с Си
    от Raydac в разделе Программирование
    Ответов: 0
    Последнее: 21.12.2009, 23:14
  3. Пожелания ваще
    от svofski в разделе Эмуляторы отечественных компьютеров
    Ответов: 7
    Последнее: 01.09.2009, 18:27
  4. SDCC вокруг да около
    от andrews в разделе Программирование
    Ответов: 8
    Последнее: 26.03.2008, 08:16
  5. Пожелания по сервисам форума
    от andrews в разделе Форум
    Ответов: 10
    Последнее: 14.08.2006, 13:47

Ваши права

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