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

User Tag List

Страница 2 из 5 ПерваяПервая 12345 ПоследняяПоследняя
Показано с 11 по 20 из 45

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

  1. #11

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

    По умолчанию

    Я думаю, надо объединять процедуры и данные, принадлежащие каждому оверлею, чтобы при каждом вызове или использовании указателя не было этих накладных расходов. Во времена 16-битного 8086-кода (дос, винда 3.11) в си и паскале были же разные типы вызовов и указателей - Near и Far. Первые были дешевыми в использовании, вторые - дорогими. И вообще, если данные лежат в другой странице - то может быть эффективнее скопировать их в общую область памяти, чем переключать страницы при доступе к каждому байту.

  2. #12

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

    По умолчанию

    У меня проблема не в размере кода, а в размере данных, которые на части пока плохо делятся. Не исключаю вариант, что я не понимаю что-то очень простое.
    140 килобайт исходника на данный момент при обработке дают в общей сложности 3 мегабайта структур, и это ещё не все задумки реализованы. Можно, конечно, разбирая исходник сразу код генерировать, я так уже делал - фигня получается

    Видимо, на портирование компилятора на спектрум придётся забить и делать только кросс.
    Последний раз редактировалось Bolt; 04.11.2014 в 11:13.

  3. #13

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

    По умолчанию

    Есть HiSoft Pascal, работает на Спектруме 48к, сделан еще в начале 80х.

  4. #14

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

    По умолчанию

    Нет xor. Целые только integer. Нет string. Нет процедурных типов. Нет приведения типов. Указатель на указатель нельзя. Не понял есть ли в нём получение указателя "@".
    Зато можно делать так:
    Код:
    type item=record value:integer; next:^item; end;
    Free Pascal на это ругается Error: Type "item" is not completely defined и я его в этом не понимаю.

    Ну и, скорее всего, никакой оптимизации кода и "умной линковки" там нет. Но штука очень интересная.

    p.s. Написал, а потом нашёл документацию к другим версиям. Стало ещё интересней.

  5. #15

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

    По умолчанию

    Я щас лабаю кросс-компилятор Паскаля, только целочисленные типы и выражения, а также строки. Плюс встроенная библиотека процедур вывода спрайтов, текста и карт, будут вызываться специфическими операторами. Остальное, ИМХО, для написания игр на Спектруме не нужно.

  6. #16

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

    По умолчанию

    Нет, у меня если и будет, то нечто универсальное и кроссплатформенное, которое может скомпилировать само себя. Начиналось с кросс-компилятора для 8-битных микроконтроллеров.

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

  8. #17

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

    По умолчанию

    тогда тебе можно заглянуть сюда: http://zx-pk.ru/showthread.php?t=18472

  9. #18

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

    По умолчанию

    Заглядывал. Олег не хочет заниматься генерацией машинного кода, я не хочу использовать прослойку в виде Си. Потом несложно будет приделать backend хоть для Си, хоть для LLVM.

  10. #19

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

    По умолчанию

    Цитата Сообщение от Bolt Посмотреть сообщение
    Можно, конечно, разбирая исходник сразу код генерировать, я так уже делал - фигня получается
    А кстати, так поступали почти все компиляторы времен 8-битных ЭВМ. Даже компилятор Microsoft Visual C++ "пожирает" структуры по мере обработки исходника. Об этом я читал в статье, где обосновывалась невозможность экспорта из него AST программы.

    Я бы решал задачу по частям. Сначала сделал наиболее простым образом кросс-компилятор без ограничений по ресурсам. А потом уже пытался его оптимизировать по памяти, стремясь в конце концов уложиться в память ZX. Кстати, 140 килобайт исходника на Спектруме - это как-то многовато. Такой исходник даже сам по себе в 128К памяти не влезет. Большие программы обычно разбиваются на части с раздельной компиляцией, тогда памяти хватает.

  11. #20

    Регистрация
    30.01.2006
    Сообщений
    1,921
    Спасибо Благодарностей отдано 
    73
    Спасибо Благодарностей получено 
    119
    Поблагодарили
    80 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Barmaley_m Посмотреть сообщение
    Кстати, 140 килобайт исходника на Спектруме - это как-то многовато. Такой исходник даже сам по себе в 128К памяти не влезет. Большие программы обычно разбиваются на части с раздельной компиляцией, тогда памяти хватает.
    на мой взгляд 140 кб исходника это маленькая библиотечка
    ZXMAK2 - Виртуальная Машина ZX Spectrum https://github.com/zxmak/ZXMAK2 (старая ссылка http://zxmak2.codeplex.com)
    ZXMAK.NET - спектрум на C# http://sourceforge.net/projects/zxmak-dotnet

Страница 2 из 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

Ваши права

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