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

User Tag List

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

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

  1. #21
    Activist Аватар для PPC
    Регистрация
    01.03.2011
    Адрес
    Stamford
    Сообщений
    335
    Спасибо Благодарностей отдано 
    46
    Спасибо Благодарностей получено 
    42
    Поблагодарили
    18 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

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

  2. #22
    Guru Аватар для svofski
    Регистрация
    20.06.2007
    Адрес
    С.-Петербург
    Сообщений
    4,116
    Спасибо Благодарностей отдано 
    795
    Спасибо Благодарностей получено 
    658
    Поблагодарили
    403 сообщений
    Mentioned
    22 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
    Activist Аватар для PPC
    Регистрация
    01.03.2011
    Адрес
    Stamford
    Сообщений
    335
    Спасибо Благодарностей отдано 
    46
    Спасибо Благодарностей получено 
    42
    Поблагодарили
    18 сообщений
    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
    Moderator
    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    4,577
    Спасибо Благодарностей отдано 
    61
    Спасибо Благодарностей получено 
    106
    Поблагодарили
    92 сообщений
    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
    Veteran Аватар для Oleg N. Cher
    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,623
    Спасибо Благодарностей отдано 
    2,206
    Спасибо Благодарностей получено 
    143
    Поблагодарили
    109 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

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

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

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


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

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

  6. #26
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    7,844
    Спасибо Благодарностей отдано 
    654
    Спасибо Благодарностей получено 
    1,822
    Поблагодарили
    1,045 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

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

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

  8. #27
    Veteran Аватар для Kakos_nonos
    Регистрация
    26.12.2010
    Адрес
    Кубань
    Сообщений
    1,154
    Спасибо Благодарностей отдано 
    33
    Спасибо Благодарностей получено 
    39
    Поблагодарили
    23 сообщений
    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

Ваши права

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