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

User Tag List

Страница 3 из 5 ПерваяПервая 12345 ПоследняяПоследняя
Показано с 21 по 30 из 41

Тема: Sphinx C-- для Z80

  1. #21
    Veteran Аватар для Oleg N. Cher
    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,593
    Спасибо Благодарностей отдано 
    2,158
    Спасибо Благодарностей получено 
    130
    Поблагодарили
    96 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Добавлю ещё пару ссылок на сравнение Си-компайлеров:

    https://www.z88dk.org/wiki/doku.php?...ont#benchmarks
    http://www.cpcmania.com/Docs/Program..._and_speed.htm

    Но мы отклоняемся от темы. Всё-таки оптимизация компилятором и оптимизация руками - это несколько разные вещи. Как и высокоуровневый и низкоуровневый код.

  2. #22
    Master
    Регистрация
    31.01.2007
    Адрес
    Москва
    Сообщений
    714
    Спасибо Благодарностей отдано 
    7
    Спасибо Благодарностей получено 
    40
    Поблагодарили
    31 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Если есть большое желание сподвигнуть на написание компилятора, может лучше рассказать про bison/yacc/flex или что там нынче модно? Да вообще направить пытливый детский ум не в ручное написание лексического парсера и изучение исходников времен зеленых терминалов, а познакомить с правильным подходом. Может и не напишем, но книжки правильные и интересные почитаем. А то претенденты на лучший язык для спека каждые пол года новые, а реально используются максимум скрипты из агд и мк2, ну или С от безысходности.

  3. #23
    Veteran
    Регистрация
    29.12.2010
    Адрес
    Москва
    Сообщений
    1,858
    Спасибо Благодарностей отдано 
    130
    Спасибо Благодарностей получено 
    104
    Поблагодарили
    62 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    я пробовал читать "Книгу Дракона" (известную в писи-кругах), но для Спека оттуда мало что применимо. Там слишком современные подходы

  4. #24
    Activist Аватар для Trol73
    Регистрация
    07.05.2015
    Адрес
    г. Ульяновск
    Сообщений
    346
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    50
    Спасибо Благодарностей получено 
    36
    Поблагодарили
    24 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Да, в 2018 году естественно использовать всякие там bison/yacc/flex/antlr/javacc и прочие LLVM, но их недостаток - высокий порог вхождения. Тогда как написать свой простой парсер реально за пару-тройку вечеров. Если изначально не ставить цель написания с нуля собственного ЯВУ, а сделать некоторую надстройку над ассемблером, которая улучшит структуру и читаемость кода, и постепенно её развивать, то можно получить ощутимый практический результат сравнительно небольшими усилиями.

  5. #25
    Veteran Аватар для Oleg N. Cher
    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,593
    Спасибо Благодарностей отдано 
    2,158
    Спасибо Благодарностей получено 
    130
    Поблагодарили
    96 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от krt17 Посмотреть сообщение
    может лучше рассказать про bison/yacc/flex или что там нынче модно?
    Дык. Сподвигайтесь.


    Но я продолжаю оставаться при мнении, что энтузиасту-самоделкину подвластен только простой компилятор ЯВУ со средним качеством генерации кода. То есть он даже не приблизится к SDCC, который здесь много ругали и много хвалили. Кстати, есть ещё ZSDCC из набора z88dk - SDCC с расширенным набором правил для peephole-оптимизатора. По утверждениям разработчиков - даёт код намного лучше.

    Другое дело, если язык очень низкоуровневый - типа Metal, COLOSS, PL/M или C--
    И тогда можно описывать все оптимизации руками и писать на нём демки и игры качества, сопоставимого с написанными на ассемблере.

  6. #26
    Activist
    Регистрация
    21.08.2009
    Адрес
    Cyprus
    Сообщений
    233
    Спасибо Благодарностей отдано 
    81
    Спасибо Благодарностей получено 
    23
    Поблагодарили
    19 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Вариация C--, кстати, на практике используется в GHC (компилятор Haskell) в качестве промежуточного кода: https://ghc.haskell.org/trac/ghc/wik...entary/Rts/Cmm

  7. #27
    Guru Аватар для Shiny
    Регистрация
    19.01.2017
    Адрес
    г. Арзамас
    Сообщений
    2,121
    Записей в дневнике
    36
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    21
    Поблагодарили
    10 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    кстати, кто копался в коде? выходит, что в x86 сравнение переменных выльется в не пойми что, если сравнивать с кодом z80.

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

    По умолчанию

    В коде не копался, но по-моему наоборот, в Z80 сравнение переменных выливается в не пойми что.
    x86 более приспособлен под ЯВУ (локальные переменные, массивы, указатели...).

  9. #29
    Guru Аватар для Shiny
    Регистрация
    19.01.2017
    Адрес
    г. Арзамас
    Сообщений
    2,121
    Записей в дневнике
    36
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    21
    Поблагодарили
    10 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    как раз да. я увидел в Hitech C замысловатый код сравнения. в х86 выглядело бы как:

    cmp ax,-1
    jl..
    jg..

  10. #30
    Activist Аватар для Trol73
    Регистрация
    07.05.2015
    Адрес
    г. Ульяновск
    Сообщений
    346
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    50
    Спасибо Благодарностей получено 
    36
    Поблагодарили
    24 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Если есть желание сделать новый язык, надо начать со спецификации. Описать синтаксические конструкции и ассемблерный код, в который они будут конвертироваться. Начать с самого простого и основного и постепенно расширять. Для начала можно генерировать на выходе ассемблерный листинг и использовать внешний асм-компилятор.

    Как вариант - взять ассемблерный исходник, и смотреть, какие конструкции можно добавить, чтобы улучшить читаемость и не теряя качество машинного кода.

    Если будет спека, любой желающий сможет начать писать компилятор. В частности, я мог бы попробовать сделать его на базе avr-asm-ext. От исходников С-- Михаила тут навряд ли будет большая практическая польза для Z80.

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

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

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

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

Похожие темы

  1. LLVM Backend для Z80
    от EARL в разделе Программирование
    Ответов: 124
    Последнее: 21.01.2024, 07:59
  2. Ищу Си для Z80
    от AlexBel в разделе Программирование
    Ответов: 376
    Последнее: 12.08.2018, 19:37
  3. Z80 симулятор для PROTEUS'а ...
    от Robus в разделе Эмуляторы
    Ответов: 9
    Последнее: 09.04.2015, 06:44
  4. Компилятор С и ASM для Z80 на C#
    от ZXMAK в разделе Софт
    Ответов: 28
    Последнее: 18.11.2014, 16:31
  5. Машина Тьюринга для Z80
    от ZXMAK в разделе Эмуляторы
    Ответов: 4
    Последнее: 15.08.2011, 03:26

Ваши права

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