User Tag List

Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя
Показано с 11 по 20 из 27

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

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

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

    По умолчанию

    PL/M компилер точно сгенерит код эффективней, чем Си. А насчёт PL/1 я не уверен. Не тестил.

    Цитата Сообщение от PPC Посмотреть сообщение
    Это очень простая для оптимизатора ситуация, почему Manx её не сделал, мне до конца не ясно.
    Это может быть связано с однопроходностью компилятора. В момент разбора синтаксиса по строкам и генерации кода для входа в процедуру у компилятора может ещё не быть информации, вызывается ли эта функция рекурсивно, или нет.

    Ну, в общем, только тестировать, а не радоваться заранее.

    Кстати, Ofront+ (Оберон в Си) умеет генерить на выходе K&R, если что. Ну и ANSI конечно тоже.

    Цитата Сообщение от PPC Посмотреть сообщение
    Язык C-это наше всё - самое то быстро писать CP/M-совместимые утилиты.
    Есть ещё Cowgol.

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

    Мне больше всего интересно в этой теме:

    a) применение ACK в качестве компилятора для разработки восьмибитных игр на Паскале и Модуле-2 для Вектора-06Ц, Специалиста, Апогея и др. платформ на КР580;

    b) применение ACK в качестве бэк-энда при разработке игр на Обероне под эти же платформы.

    На эти темы буду рад пообщаться.

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

  3. #2

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

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    PL/M компилер точно сгенерит код эффективней, чем Си. А насчёт PL/1 я не уверен. Не тестил.

    Это может быть связано с однопроходностью компилятора. В момент разбора синтаксиса по строкам и генерации кода для входа в процедуру у компилятора может ещё не быть информации, вызывается ли эта функция рекурсивно, или нет.
    Не совсем ясно, при чём тут многопроходность компилятора и возможность рекурcивного входа в функцию. Если нет локальных переменных, не нужен и фрейм под них. И stack adjust тоже не нужен, можно самого себя хоть до упомрачения вызывать, параметры просто лягут в стек вызова друг за другом .
    А Manx такой оптимизации не делает.

    Я, конечно, имел ввиду PL/M (не 1) Килдалла

  4. #3

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

    По умолчанию

    Цитата Сообщение от PPC Посмотреть сообщение
    хочу надеяться на наличие у ACK оптимизатора, который сможет эффекивно выбрасывать ненужное в определённых ситуациях
    При очень поверхностном проглядывании исходников ack я видел только оптимизацию на уровне последовательностей команд 8080. Но кодогенерацию я смотрел только для 8080 и возможно есть и оптимизации на более высоком (более абстрактном) уровне

  5. #4

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

    По умолчанию

    Разобрался: csave резервирует указанное количество байтов на стеке. А при чём тут рекурсия? :-D

  6. #5

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

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Разобрался: csave резервирует указанное количество байтов на стеке. А при чём тут рекурсия? :-D
    Я рад, что вы задали себе этот вопрос.

  7. #6

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

    По умолчанию

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

    aot: Так всё-таки найдётся джигит покодить на Паскале или Модуле-2 под i8080?

  8. #7

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

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Да не себе, а лично Вам, PPC. Вы упомянули рекурсию, рассуждали о том, что в однопроходном компиляторе как-то можно определить является ли функция рекурсивной, а закончили постом хардкорного машкода, который вообще про локальные переменные. А в итоге пришли к тому, что я разговариваю сам с собой? Ну да ладно. Но мысли излагаете как-то запутанно.

    aot: Так всё-таки найдётся джигит покодить на Паскале или Модуле-2 под i8080?
    Укажите, где это я рассуждал о рекурсии и однопроходных компиляторах до того как вы такие слова мудрёные использовали?
    Я и слово то такое "рекурсия" первый раз "упомянул" вам в ответ, тем более "однопроходность" :

    Давайте учиться читать. Ваше творчество:
    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Это может быть связано с однопроходностью компилятора. В момент разбора синтаксиса по строкам и генерации кода для входа в процедуру у компилятора может ещё не быть информации, вызывается ли эта функция рекурсивно, или нет.
    Мой ответ на это - где я первый раз "упомянул" (как вы это называете), рекурсию и "проходность":
    Цитата Сообщение от PPC Посмотреть сообщение
    Не совсем ясно, при чём тут многопроходность компилятора и возможность рекурcивного входа в функцию. Если нет локальных переменных, не нужен и фрейм под них. И stack adjust тоже не нужен, можно самого себя хоть до упомрачения вызывать, параметры просто лягут в стек вызова друг за другом .
    Прочтите ещё раз мои посты 04.01 и 05.01:
    Один из частных примеров (отсутствие локальных данных, когда стек можно пихать навалом на фрейм вызова) я уже привёл.

    Какой хардкор, я привёл вам часть стандартной библиотеки компилятора и пример функции foo() { char locals[3]; }
    Похоже, с вами рекурсивная диффамация приключилась. Бывает.

  9. #8

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

    По умолчанию

    PPC, я не хотел бы замусоривать тему, а Вы, похоже, смакуете. Остаюсь при своём мнении: Вы приплели к рекурсии и невозможности её выявить на первом проходе какой-то кусок кода и какие-то локальные переменные. Это было не к месту. Dixi.

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

    P.S. Насколько я понял: в сухом остатке у нас - ACK по качеству кода ну может чуть получше, чем BDS-C. Это печально.

  10. #9

    Регистрация
    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

  11. #10

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

    По умолчанию

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

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

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

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


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

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

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

Ваши права

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