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

User Tag List

Страница 4 из 5 ПерваяПервая 12345 ПоследняяПоследняя
Показано с 31 по 40 из 45

Тема: Рапределение памяти при работе компилятора ЯВУ

  1. #31

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

    По умолчанию

    Сложно сказать насчёт стандартности, но более ли менее распространённая система iSDOS позволяет работать с винтами и довольно большими разделами (~30Mb). Система неплохо документирована. Правда там памяти под исполняемый код не густо, но можно работать с оверлеями и RAM-диском (должно быть ОЗУ 128К или более).

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

  3. #32

    Регистрация
    29.12.2010
    Адрес
    Москва
    Сообщений
    1,869
    Спасибо Благодарностей отдано 
    142
    Спасибо Благодарностей получено 
    110
    Поблагодарили
    66 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Bolt Посмотреть сообщение
    У меня проблема не в размере кода, а в размере данных, которые на части пока плохо делятся. Не исключаю вариант, что я не понимаю что-то очень простое.
    140 килобайт исходника на данный момент при обработке дают в общей сложности 3 мегабайта структур, и это ещё не все задумки реализованы. Можно, конечно, разбирая исходник сразу код генерировать, я так уже делал - фигня получается
    До сих пор не вкурю, какие-такие огромные данные ты собираешь хранить? Дерево разбора? Библиотеки процедур?
    У меня в создаваемом компиляторе в памяти формируется только таблица констант, переменных и имен процедур, с несколькими параметрами. Занимает копейки. А код генерируется по-ходу. Но можно генерировать промежуточный код для последующей оптимизации. Промежуточный код тоже занимает немного, по-сути каждая команда байтов по 3-5 (если писать на Спекки).

  4. #33

    Регистрация
    12.07.2006
    Адрес
    г. Киев, Украина
    Сообщений
    2,147
    Спасибо Благодарностей отдано 
    25
    Спасибо Благодарностей получено 
    95
    Поблагодарили
    82 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от James DiGreze Посмотреть сообщение
    Правда там памяти под исполняемый код не густо, но можно работать с оверлеями и RAM-диском (должно быть ОЗУ 128К или более).
    вот бы глянуть пример работы с оверлеем

  5. #34

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

    По умолчанию

    Увы и ах, своего ничего не осталось после трагической гибели hdd с iSDOS.
    Где-то в недрах тырнета должны попадаться обрывки документации, по крайней мере когда-то давно мне попадались.

  6. #35

    Регистрация
    14.04.2013
    Адрес
    г. Ростов-на-Дону
    Сообщений
    608
    Спасибо Благодарностей отдано 
    70
    Спасибо Благодарностей получено 
    54
    Поблагодарили
    48 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Andrew771 Посмотреть сообщение
    До сих пор не вкурю, какие-такие огромные данные ты собираешь хранить? Дерево разбора? Библиотеки процедур?
    У меня в создаваемом компиляторе в памяти формируется только таблица констант, переменных и имен процедур, с несколькими параметрами. Занимает копейки. А код генерируется по-ходу.
    Да, в основном это дерево разбора. Но его можно сократить на треть и больше, надо только подумать к чему приведёт удаление некоторых полей. Есть и другие мысли по поводу оптимизации дерева, в том числе использование промежуточного кода. Таблица имён действительно занимает копейки, килобайт 100, но это полная, хранить можно только видимые.

    Кроме констант, переменных и процедур есть ещё таблица типов. Andrew771, какие типы поддерживает или будет поддерживать создаваемый компилятор? Указатели, массивы, структуры, указатели на структуры, многомерные массивы указателей на структуры...? У меня заложена поддержка всего этого, а ещё поддержка модулей, процедурных и файловых типов, полиморфных и inline-процедур, переопределение операторов, умная линковка, условная компиляция {$IFDEF}...{$ENDIF}, и сам уже не помню что ещё Всё это требует памяти. К генерации кода по ходу разбора может потом и вернусь, но только для того чтобы всё-таки запустить это в 64 килобайтах

  7. #36

    Регистрация
    16.01.2005
    Адрес
    Москва
    Сообщений
    1,992
    Спасибо Благодарностей отдано 
    227
    Спасибо Благодарностей получено 
    310
    Поблагодарили
    115 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от James DiGreze Посмотреть сообщение
    iSDOS позволяет работать с винтами и довольно большими разделами (~30Mb).
    Поправочка - 16Мб

    Цитата Сообщение от James DiGreze Посмотреть сообщение
    Увы и ах, своего ничего не осталось после трагической гибели hdd с iSDOS.
    Где-то в недрах тырнета должны попадаться обрывки документации, по крайней мере когда-то давно мне попадались.
    А что было и что погибло?
    Максагор, NedoPC group
    ПК ATM-turbo 2+ 1024Kb RAM, 1,7Gb HDD, CD-ROM, Turbo FM, GS-512
    [ZX rulezzz 4reva!!!]
    http://atmturbo.nedopc.com
    http://vk.com/atmturbo
    http://maksagor.livejournal.com
    http://moskprf.ru
    [СССР][Коммунизм][КПРФ] ну [ZX], естественно...

  8. #37

    Регистрация
    29.12.2010
    Адрес
    Москва
    Сообщений
    1,869
    Спасибо Благодарностей отдано 
    142
    Спасибо Благодарностей получено 
    110
    Поблагодарили
    66 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Bolt Посмотреть сообщение
    Andrew771, какие типы поддерживает или будет поддерживать создаваемый компилятор? Указатели, массивы, структуры, указатели на структуры, многомерные массивы указателей на структуры...? У меня заложена поддержка всего этого, а ещё поддержка модулей, процедурных и файловых типов, полиморфных и inline-процедур, переопределение операторов, умная линковка, условная компиляция {$IFDEF}...{$ENDIF}, и сам уже не помню что ещё Всё это требует памяти. К генерации кода по ходу разбора может потом и вернусь, но только для того чтобы всё-таки запустить это в 64 килобайтах
    Поддерживаются только типы Byte, Word, String, а также одномерные и двумерные массивы из них. Почему так - вот моя позиция. У тебя-то конечно всё по-максимуму поддерживается. Но нужно ли это на Спектруме?

  9. #38

    Регистрация
    14.04.2013
    Адрес
    г. Ростов-на-Дону
    Сообщений
    608
    Спасибо Благодарностей отдано 
    70
    Спасибо Благодарностей получено 
    54
    Поблагодарили
    48 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    На Спектруме может и не нужно, а вообще пригодится.

  10. #39

    Регистрация
    14.04.2013
    Адрес
    г. Ростов-на-Дону
    Сообщений
    608
    Спасибо Благодарностей отдано 
    70
    Спасибо Благодарностей получено 
    54
    Поблагодарили
    48 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Немного статистики.

    4900 строк, 127000 символов.
    17500 токенов, 60000 символов. (т.е. комментарии составляют половину текста)
    900 идентификаторов, около 100 килобайт для хранения.
    8200 узлов синтаксического дерева, около 600 килобайт для хранения.

    Не могу понять одну вещь. Почему так? Это особенность FPC или так и должно быть?
    Код:
    const
       c1:array [1..10] of byte=(0,1,2,3,4,5,6,7,8,9);
       c2:string='qwe';
       c3='qwe';
    var
       p:pointer;
    begin
       p:=@c1; // Ok
       p:=@c2; // Ok
       p:=@c3; // Error: Can't take the address of constant expressions
    end.

  11. #40

    Регистрация
    29.12.2010
    Адрес
    Москва
    Сообщений
    1,869
    Спасибо Благодарностей отдано 
    142
    Спасибо Благодарностей получено 
    110
    Поблагодарили
    66 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Bolt Посмотреть сообщение
    Не могу понять одну вещь. Почему так? Это особенность FPC или так и должно быть?
    фиг знает. Видать, не нравится нетипизированная константа.

    ---------- Post added at 09:32 ---------- Previous post was at 09:30 ----------

    возможно, в компилированный код подставляет непосредственное значение, а не хранит его в памяти в отдельной ячейке. Поэтому отсутствует физически указатель.

Страница 4 из 5 ПерваяПервая 12345 ПоследняяПоследняя

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

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

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

Похожие темы

  1. Построение компилятора
    от Andrew771 в разделе Программирование
    Ответов: 32
    Последнее: 04.05.2014, 19:16
  2. Кодогенерация SDCC: пожелания об улучшении компилятора
    от Oleg N. Cher в разделе Программирование
    Ответов: 99
    Последнее: 10.11.2012, 16:05
  3. Конструктор для компилятора с Си
    от Raydac в разделе Программирование
    Ответов: 0
    Последнее: 21.12.2009, 23:14

Ваши права

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