User Tag List

Страница 3 из 3 ПерваяПервая 123
Показано с 21 по 27 из 27

Тема: ACK (Amsterdam Compiler Kit) для Вектора и 8080 вообще

  1. #21

    Регистрация
    01.03.2011
    Адрес
    Stamford
    Сообщений
    336
    Спасибо Благодарностей отдано 
    46
    Спасибо Благодарностей получено 
    49
    Поблагодарили
    20 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    PPC, я не хотел бы замусоривать тему, а Вы, похоже, смакуете. Остаюсь при своём мнении: Вы приплели к рекурсии и невозможности её выявить на первом проходе какой-то кусок кода и какие-то локальные переменные. Это было не к месту. Dixi.
    - - - Добавлено - - -
    Ещё раз вам повторю: приведите пример моими словами о рекурсии, о необходимости или невозможности её выявить о проходах и прочем.

    Своими постами вы загораживаете мне ivagor-а, и его дельный ответ по существу.
    Последний раз редактировалось PPC; 06.01.2021 в 21:50. Причина: Закрыл quote

  2. #22

    Регистрация
    20.06.2007
    Адрес
    С.-Петербург
    Сообщений
    4,308
    Спасибо Благодарностей отдано 
    1,033
    Спасибо Благодарностей получено 
    819
    Поблагодарили
    490 сообщений
    Mentioned
    26 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Сравнивать BDS C и ACK неуместно. BDS C это даже не K&R. Какая разница, какое у BDS C качество кода, если им нельзя скомпилировать ничего кроме othello.c? ACK собирает исправно работающий uIP, это неплохое доказательство состоятельности его как компилятора.

    Что до того, какой код генерит ACK. Почему бы просто не почитать то, что он генерит? startrek.c подойдет?
    Без оптимизаций:
    https://pastebin.com/Ti4chcvw

    -O6:
    https://pastebin.com/BTxMFibL
    Больше игр нет

  3. #23

    Регистрация
    01.03.2011
    Адрес
    Stamford
    Сообщений
    336
    Спасибо Благодарностей отдано 
    46
    Спасибо Благодарностей получено 
    49
    Поблагодарили
    20 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Сколько префиксов перед пабликами у стандартных функций, аж 3
    У UDF - одно подчёркивание

    Очень недурно на первый взгляд.

    Мне понравилось как делается фрейм
    call .probyte
    .data -LOCAL

    Рестарты на полную катушку, это здорово как засылка параметров в функции, все эти .fstoreX

    Чуть напрягает
    jmp .ret
    по выходу

    и знакомое

    mov a,m
    mov l,a
    mvi h,0

    Понравилась оптимизация в maneuver_energy e = e - n - 10
    Компайлер сделал e = e - (n+10)
    Aztec так не умеет

    Но в общем - классно на первый взгляд, а в деталях надо смотреть более пристально.

  4. #24

    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    4,581
    Спасибо Благодарностей отдано 
    64
    Спасибо Благодарностей получено 
    112
    Поблагодарили
    97 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    P.S. Насколько я понял: в сухом остатке у нас - ACK по качеству кода ну может чуть получше, чем BDS-C. Это печально.
    тут беда не в компиляторах, а в i8080, которому до нормального процессора не хватает ни РОН ни способов адресации. Вот и получаются семь шапок из овчинки. Поэтому на Z80 обычно С ложится лучше (хотя тоже далеко не идеал из-за желания Z80 быть архитектурно близким к 8080). Даже не смотря на то, что индексные или альтернативные регистры в Z80 это плюс байт/префикс к команде и это казалось бы даст большую трату кода - но нет. Поэтому - да, смириться и искать компилер С для 8080, который хотя бы понимает ANSI, и синтаксис исходников сложных приложений пережовывает
    Лучше сделать и жалеть, чем не сделать и жалеть.

    Некоторые из моих поделок тут: https://github.com/serge-404

  5. #25

    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,684
    Спасибо Благодарностей отдано 
    2,724
    Спасибо Благодарностей получено 
    172
    Поблагодарили
    132 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от PPC Посмотреть сообщение
    приведите пример моими словами о рекурсии, о необходимости или невозможности её выявить о проходах и прочем.
    PPC, если Вы вникнете в суть форумного (да и не только) общения, то поймёте, что общение (исключая родственных душ) это Вавилон: каждый говорит только о своём. Я пытался развить тему, что в ACK же ещё есть Модула-2 и Паскаль! Но это оказалось никому не интересно. По существу.

    Так вот. Свою пользу от присутствия здесь я нахожу в том, что я рассказал вам, энтузиастам, работающим с кодом для процессора 8080, об идее передачи параметров внутрь функции без фрейма. Через глобальные переменные. Ведь компилятор может сам так делать. Потому что само наличие фрейма, ввиду отсутствия в 8080 аналогов команд ENTER/LEAVE или даже индексного регистра для адресации параметров на стеке, делает обращение к параметрам (и к локальным переменным) громоздким и неэффективным. Мой способ конечно специфический, обладает рядом ограничений, но всё-таки до него ещё не додумались авторы компиляторов Си для 8080.

    • Функция не должна иметь локальных переменных. Гипотетический однопроходный компилятор способен это вовремя обнаружить.

    • Функция не должна быть реентерабельной, т.е. иметь прямую или косвенную рекурсию. Гипотетический однопроходный компилятор будет иметь трудности с определением этой ситуации в момент принятия решения: генерировать фрейм или нет?


    Это то, что было у меня на уме, когда я писал посты в эту ветку. А Вы же, PPC, принялись рассуждать о локальных переменных и о том как их лучше размещать на стеке, да и привели ещё и код. А это частности. Намного более любопытна задача: как определить на момент принятия решения "генерить ли фрейм" - рекурсивна ли эта функция? Я написал, что в однопроходном компиляторе это сделать почти невозможно. А Вы принялись опять "при чём тут многопроходность, я вот так размещаю лок. переменные на стеке". Это вообще разговор слепого с глухим. Но я не удивлён, потому что Вы о своём. Постарайтесь ухватить мой посыл хотя бы немного.

    Цитата Сообщение от PPC Посмотреть сообщение
    Своими постами вы загораживаете мне ivagor-а, и его дельный ответ по существу.
    Не умаляя достоинств ivagor'а: дельный ответ по существу чего? Просто совпало? :-D

  6. #26

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,395
    Спасибо Благодарностей отдано 
    765
    Спасибо Благодарностей получено 
    2,367
    Поблагодарили
    1,317 сообщений
    Mentioned
    39 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Извините за оффтоп, но в теме уже упоминались другие компиляторы C кроме ack, вот еще один

    Эти 3 пользователя(ей) поблагодарили ivagor за это полезное сообщение:

    Kakos_nonos(19.01.2021), Oleg N. Cher(14.01.2021), svofski(14.01.2021)

  7. #27

    Регистрация
    26.12.2010
    Адрес
    Кубань
    Сообщений
    1,159
    Спасибо Благодарностей отдано 
    42
    Спасибо Благодарностей получено 
    47
    Поблагодарили
    26 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    О, вот это круто!

    - - - Добавлено - - -

    А под Windows может кто-нибудь собрать компилятор ACK? Буду премного благодарен!

Страница 3 из 3 ПерваяПервая 123

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

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

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

Похожие темы

  1. Ответов: 10
    Последнее: 15.02.2020, 12:36
  2. Форк SDCC для процессора 8080
    от Oleg N. Cher в разделе Вектор
    Ответов: 49
    Последнее: 25.09.2019, 15:20
  3. Ответов: 3
    Последнее: 21.09.2018, 18:28
  4. Ассемблер для 8080
    от shoorick в разделе Разное
    Ответов: 26
    Последнее: 13.02.2016, 14:30
  5. An 8080/Z80 C Compiler
    от breeze в разделе Программирование
    Ответов: 1
    Последнее: 18.08.2005, 06:54

Ваши права

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