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

User Tag List

Страница 30 из 38 ПерваяПервая ... 262728293031323334 ... ПоследняяПоследняя
Показано с 291 по 300 из 377

Тема: Ищу Си для Z80

  1. #291

    Регистрация
    16.02.2006
    Адрес
    Новосибирск
    Сообщений
    3,280
    Спасибо Благодарностей отдано 
    17
    Спасибо Благодарностей получено 
    91
    Поблагодарили
    54 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Oleg N. Cher, мне во всём этом не понятно два момента:
    1. почему нужно использовать 2 компилятора (и ловить в 2 раза больше косяков потом)
    2. почему разрабы не объединят усилия для создания одного быстрого и оптимального компилятора, чтобы избавить пользователей от подобных костылей?
    если либы у z88dk столь оптимизированные, ну тогда переносить их изначально надо под sdcc. сам по себе, как самостоятельный компилятор, z88dk весьма слабый. а использовать его чисто для вызова sdcc это тот ещё костыль, на мой взгляд. я ни когда не прибегал и не прибегну к такому мазохизму. да и сам sdcc тоже весьма не самый оптимальный вариант. посмотри на evo sdk. он базируется на sdcc версии 2.9.0. если в него засунуть последние билды и попробовать собрать хоть что-то из проектов, то ты словишь пачку варнингов и ошибок там, где их быть не может и не должно. и сами проекты собираться начинают по несколько минут. порт Digger`а у ВБИ собирается около 10 минут последним sdcc, жескачь какой то.
    а вот хайтех. который ты так сильно недолюбливаешь, собирает весь этот код за 5 секунд)))
    0A заповедей:
    I. Не удаляй каталог свой.
    II. Не удаляй до времени ни одного файла.
    III. Не кради файлы.
    IV. Не желай программы ближнего своего.
    V. Почитай BDOS и BIOS как родителей своих ...
    ---
    Sprinter resurrect:
    Telegram
    Discord
    Repo
    Forum

  2. #292

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

    По умолчанию

    Цитата Сообщение от Sayman Посмотреть сообщение
    Oleg N. Cher, мне во всём этом не понятно два момента:
    1. почему нужно использовать 2 компилятора (и ловить в 2 раза больше косяков потом)
    В принципе, незачем. Я использую только SDCC. Но смысл ещё в том, что почему-то дёргаемый из z88dk SDCC даёт лучший код, видимо, за счёт дополнительных условий для щелевого оптимизатора. Не интересно? Не юзай.

    Цитата Сообщение от Sayman Посмотреть сообщение
    2. почему разрабы не объединят усилия для создания одного быстрого и оптимального компилятора, чтобы избавить пользователей от подобных костылей?
    У них могут быть различные цели и взгляды на разработку. А может быть и личные амбиции. Sayman, есть транслятор Ofront - Оберон-2 в Си, кроме оригинального, авторского, имеется мой Ofront+. Пришлось начать свою ветку, сначала для того, чтобы иметь возможность использовать Ofront с SDCC, потом убедился, что Йозеф Темпл не приемлет предлагаемых мною фич просто потому, что он не любит дополнять проекты ненужными ему лично фичами. Например, его версия пасторальна и всё ещё не работает под 64 битами. Ну вот он такой чел, не любит париться понапрасну и усложнять себе жизнь. Второй клон Ofront'а - voc - разрабатывает команда, которая не только не желает поддержки моих фич, т.к. очень консервативна, и не желает изменять и дополнять входной язык, даже на уровне системных возможностей (которые стандарт не ограничивает). Но она смотрит в сторону диалекта Оберон-07, который настолько минимален, что даже многие оберонщики на него морщатся.

    Подобные же взгляды могут быть и в команде SDCC.

    А ты сам почему не хочешь присоединиться к проекту SDCC, раз все должны объединиться на благо создания нового компилера? Дай угадаю. Ты им не пользуешься, тебя задолбали баги и тебе вообще всё это нафиг сплющилось. Ну бывает. Но тогда нефиг предлагать всем компилерописателям "сплотиться", потому что тебе пришла такая светлая мысль. Захочут - сплотятся. ;-)

    Цитата Сообщение от Sayman Посмотреть сообщение
    если либы у z88dk столь оптимизированные, ну тогда переносить их изначально надо под sdcc.
    Переноси, если тебе нужно. Филиппу Краузе, например, вообще начхать на поддержку конкретных Z80-based компьютеров, не говоря уже о Спектруме. Он вообще фанат Coleco Vision.

    Цитата Сообщение от Sayman Посмотреть сообщение
    сам по себе, как самостоятельный компилятор, z88dk весьма слабый. а использовать его чисто для вызова sdcc это тот ещё костыль, на мой взгляд.
    Ну, это придумал не я. Это решение команды z88dk, с помощью которого они получили ту оптимизацию, которую, возможно, никогда не реализуют сами. У каждой команды разработчиков свои возможности, не все обладают ярко выраженными талантами для написания оптимизирующих компиляторов, а я снимаю шляпу хотя бы за то, что их проект на плаву. Если помнишь, компилятор Паскаля от Андрея Шарина тоже обещал быть оптимизирующим, но что-то давно не было обновлений, а код, им продуцируемый, мягко говоря, оставляет желать много лучшего.

    Цитата Сообщение от Sayman Посмотреть сообщение
    я ни когда не прибегал и не прибегну к такому мазохизму. да и сам sdcc тоже весьма не самый оптимальный вариант. посмотри на evo sdk. он базируется на sdcc версии 2.9.0. если в него засунуть последние билды и попробовать собрать хоть что-то из проектов, то ты словишь пачку варнингов и ошибок там, где их быть не может и не должно.
    Давай конкретнее. Что именно перестало поддерживаться? Ты хочешь сказать, что злобные разрабы меняют стандарт языка Си по ходу дела? И вообще. Любой проект можно поддерживать для свежего компилятора, а можно остановиться на старом, это вопрос взглядов на разработку, бывают консервативные. Но это не аргумент. Компилятор не развивается? Плохо. Развивается? Опять плохо, потому что не остаётся неизменным. Ты определись, что для тебя лучше. И пользуй старую версию, либо же нет.

    Цитата Сообщение от Sayman Посмотреть сообщение
    и сами проекты собираться начинают по несколько минут. порт Digger`а у ВБИ собирается около 10 минут последним sdcc, жескачь какой то.
    Млин, уже в третий раз говорю: пихать всю игру в одну простыню это отстой. Там идёт долгая кодогенерация из-за поиска оптимального размещения данных в регистрах. Не доходит до тебя это? Есть опция, снижающая эффективность этого показателя и повышающая скорость компиляции. Есть старый регистровый аллокатор. Всё это прекрасно годится для отладочных и промежуточных сборок.

    Цитата Сообщение от Sayman Посмотреть сообщение
    а вот хайтех. который ты так сильно недолюбливаешь, собирает весь этот код за 5 секунд)))
    А под хайтех, который я так сильно недолюбливаю, переделать код ещё сложнее, чем со старой версии SDCC на новую. Там много чего вообще иначе, и передача параметров, и многое другое. Он не умеет генерить код, который не трогает регистр IY. Он неэкономно передаёт параметры (даже однобайтовые - всегда в двух байтах). Там нету поддержки различных моделей вызова. И т.д. и т.п.
    Последний раз редактировалось Oleg N. Cher; 09.01.2017 в 06:29.

  3. #293

    Регистрация
    16.02.2006
    Адрес
    Новосибирск
    Сообщений
    3,280
    Спасибо Благодарностей отдано 
    17
    Спасибо Благодарностей получено 
    91
    Поблагодарили
    54 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А под хайтех, который я так сильно недолюбливаю, переделать код ещё сложнее, чем со старой версии SDCC на новую.
    ну ОК, давай про версии компиляторов. у меня есть тут парочка проектов под фряху, писал когда то давно, под гцц конечно, пара консольных утилит для себя делал. почему то от версии к версии самого гцц мне исходник править не требуется. он что в 6.2 собирается, что в девятке - одинакого.
    под VS2005 тоже было парочка проектов небольших (ещё по теме профика и там с sdl мелочь была). почему то оно собирается одинаково легко и без правок на 2005 и на 2013й VS.
    ЧЯДНТ? почему мои исходники при переходе на новые версии компиляторов не требуют исправлений? почему мои исходники на си писанные под z80 при сборке на sdcc каждый раз нужно тратить время и искать причину ошибок и править исходник? и это без различных асмовых вставок, чистый си исходник. почему я беру тот же не работающий кусок кода и он собирается на старом хайтехе, который вообще под цпм был писан?
    Там много чего вообще иначе, и передача параметров
    каких параметров? аргументов в функции? передача аналогична любому компилятору для z80 - через стек.
    н не умеет генерить код, который не трогает регистр IY.
    серьёзно? странно, у меня только ix гоняет в хвост и гриву. iy начинает гонять только когда объявляю register на какую то переменную и то не всегда. регистр А для 8бит. hl для 16 бит, но может и iy использовать. зависимости тут я не выловил. но в целом, если не гонять register, то iy простаивает.
    Он неэкономно передаёт параметры (даже однобайтовые - всегда в двух байтах).
    а вот это уже вопрос вкуса - кому то это не экономно, а кому то лишние inc sp не экономно (а именно так sdcc и передаёт 8ми битные аргументы стэком, может посчитаем, как оно более оптимально по тактам передавать, просто на стек кинув значение или кинуть да ещё и стэком отдельно крутить?) мне 1 байт не впадлу со стэка отдать, у меня памяти не 48кб, не жалко.
    Там нету поддержки различных моделей вызова.
    это типа которые __чего-то-там_fast_callee__? вот от сюда, в том числе, баги и ошибки при компиляции так же плодятся. от версии к версии условия передачи аргументов меняются, сиди потом сам разыскивай причины ошибок.
    вообще начхать на поддержку конкретных Z80-based компьютеров
    вот с этого и надо было начинать. а теперь вспомни свои высказывания на тему, что хайтех давно никем не поддерживается. вот и автору sdcc тоже наплевать на эту поддержку по теме z80. об чём тогда разговор. не понятно?
    sdcc конечно может выдать вменяемый код, местами, временами. но сопутствующие затраты в итоге всё портят.
    для затравки - ядро uzix для Ориона собирается примерно 3 секунды. тот же самый код на sdcc ты никогда не собирёшь! а после правок оно будет собираться минут 5. если, как ты советуешь, убрать все оптимизации дабы ускорить сборку, то в результате получается настолько медленный и раздутый код, что с ним по тормозности может сравниться только древний компилятор Aztec 1.05 (1.06).
    0A заповедей:
    I. Не удаляй каталог свой.
    II. Не удаляй до времени ни одного файла.
    III. Не кради файлы.
    IV. Не желай программы ближнего своего.
    V. Почитай BDOS и BIOS как родителей своих ...
    ---
    Sprinter resurrect:
    Telegram
    Discord
    Repo
    Forum

  4. #294

    Регистрация
    19.01.2009
    Адрес
    Белгород
    Сообщений
    385
    Спасибо Благодарностей отдано 
    6
    Спасибо Благодарностей получено 
    13
    Поблагодарили
    12 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Вот поэтому и надо отталкиваться от стандарта ANSI C90 или более привычного C99 (О C1X не говорю, так как там в основном плюшки для современных архитектур). А все нестандартные расширения - в топку.

  5. #295

    Регистрация
    21.05.2006
    Адрес
    Canada
    Сообщений
    78
    Спасибо Благодарностей отдано 
    3
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    And not for Ukraine! Alcoholics Anonymous, d'ya understand? This price angers us, we feel black slaves!
    I more meant that the price is not so outrageous considering IAR's development is done in the west where the costs are higher. But yes I understand what you are saying. 1700 euros is way more than what I would pay for a z80 compiler too

    Цитата Сообщение от Sayman Посмотреть сообщение
    Oleg N. Cher, мне во всём этом не понятно два момента:
    1. почему нужно использовать 2 компилятора (и ловить в 2 раза больше косяков потом)
    2. почему разрабы не объединят усилия для создания одного быстрого и оптимального компилятора, чтобы избавить пользователей от подобных костылей?
    если либы у z88dk столь оптимизированные, ну тогда переносить их изначально надо под sdcc. сам по себе, как самостоятельный компилятор, z88dk весьма слабый. а использовать его чисто для вызова sdcc это тот ещё костыль, на мой взгляд. я ни когда не прибегал и не прибегну к такому мазохизму. да и сам sdcc тоже весьма не самый оптимальный вариант.
    Существует больше компилятора, чем просто компилятор. Существует передний конец, который делает использование компилятора легко, сам компилятор, библиотеки, ассемблер / линкер / библиотекарь и выходная мощность генератора. Все эти вещи являются независимыми. С точки зрения размера кода и производительности, это не компилятор, который имеет наибольшее влияние - это библиотеки. Все программы подчиняются 20-80 правило, которое означает, что 20% кода выполняет 80% времени. Если вы можете сделать что 20% кода очень эффективно, ваша программа будет хорошо работать. Вот почему мы пишем библиотеки в машинном коде, а не С. Вот почему вы пишете спрайт двигатель в играх в машинном коде, а не С.

    В сравнении между SDCC и z88dk, z88dk имеет гораздо более передний конец, его библиотеки гораздо лучше, ассемблер / линкер / библиотекарь сравнима (я предпочитаю стандартные Z80 опкоды в z80asm, но это на самом деле не материал), то выходная мощность генератора делает не существует в SDCC (выход генератора принимает выходные двоичные файлы и обрабатывает их в форме, требуемой цели, например, делая .TAP для спектра, .sms для мастер-системы Сега, .ihx для встраиваемых систем и т.д.). Это C компилятор SDCC, что интересно.

    Эти части являются независимыми. Это означает, что мы можем заменить одну библиотеку с другим (и мы, есть два C библиотеки в z88dk), один компилятор с другой (мы делаем, есть два компилятора C). В настоящее время мы экспериментируем с лязгом / LLVM в качестве третьего компилятора C (мы можем компилировать .TAP с лязгом сейчас, но некоторые ручное вмешательство необходимо и качество кода не так хорошо, как SDCC или sccz80) и если кто-то приходит с компилятор мы бы с удовольствием подключи, что один в тоже. Более интересным для нас, чем лязг / LLVM для компиляции C использует LLVM для компиляции других языков, как Fortran и Pascal. Тогда мы получим те использовать код библиотеки C и дополнить, что с дополнительными функциями, необходимыми этими языками. z88dk представляет собой комплект разработки для Z80 компьютеров не только компилятор Си.

    Что касается SDCC, его библиотека C является минимальным и написан на С, что делает его медленным и большой. Есть много вещей, отсутствует из библиотеки SDCC. Например нет понятия FILE и вся зсапЕ сторона STDIO отсутствует. Для z80, библиотека имеет реализации машинного кода 16 и 8 бит математике, а также около 4-5 важных функций из string.h (тетсру, зЬгсру, ..). Мне очень нравится тот факт, Филипп повернулся тетсру и несколько других в встроенные модули (код будет встраиваемыми, а не призван к подпрограмме). Эти вещи будут выполнять хорошо и очень важны в программах на языке Си в целом. После того, как вы выходите из этого, вы увидите проблемы с производительностью. 32-битная математика примерно в 1,7 раза медленнее, чем z88dk. 64-битная математика движется к 3x медленнее, чем z88dk. Поплавки 3x медленнее, чем z88dk и в результате на 40% больше кода. Такого рода сравнение будет пронизывать через всю библиотеку. Не является недостатком компилятора - это недостаток библиотеки, которая не зависит от компилятора.

    Существует причина, почему библиотека SDCC написана на C. SDCC цели 7 или 8 различных микропроцессоров. Библиотека написана на C означает, что он является портативным для всех 8 из этих процессоров. Потому что есть только одно тело кода реализации библиотеки, есть только одно тело кода для поддержания. SDCC никогда не будет принимать процессор конкретной библиотеки в SDCC как библиотеку z80 z88dk в. Они потребуются специалисты в каждом процессоре, чтобы поддерживать каждую отдельную библиотеку. Библиотеки больше не будут одинаковыми для каждого процессора - некоторые процессоры будут лучше поддерживается, чем другие, и людей, использующих SDCC бы труднее использовать для различных целевых процессоров, поскольку они должны будут изучать различные библиотеки. Причуды каждого из них, уровень поддержки для каждого из них.

    SDCC также никогда не ориентированы на конкретные архитектуры. Он никогда не будет поддерживать отдельную базу кода для десятков Z80 машин в существовании.

    z88dk о делает все вещи, SDCC не хочет делать. Решение не ставить z88dk в SDCC, это поставить SDCC в z88dk.

    Скрытый текст


    There is more to a compiler than just the compiler. There is the front end that makes the use of the compiler easy, the compiler itself, the libraries, the assembler/linker/librarian and the output generator. All of these things are independent. In terms of code size and performance, it is not the compiler that has most impact -- it is the libraries. All programs obey the 20-80 rule which means 20% of the code is executing 80% of the time. If you can make that 20% of the code very efficient, your program will perform well. That's why we write the libraries in machine code and not C. That's why you write the sprite engine in your games in machine code and not C.

    In comparison between sdcc and z88dk, z88dk has a much better front end, its libraries are much better, the assembler/linker/librarian is comparable (I prefer the standard z80 opcodes in z80asm but that is not really material), the output generator does not exist in sdcc (the output generator takes the output binaries and processes them into a form required by the target, for example making .tap for spectrum, .sms for sega master system, .ihx for embedded systems, etc). It is sdcc's C compiler that is interesting.

    These pieces are independent. This means we can replace one library with another (and we do, there are two C libraries in z88dk), one compiler with another (we do, there are two C compilers). We are currently experimenting with clang/llvm as a third C compiler (we can compile to .tap with clang now but some manual intervention is necessary and the code quality is not as good as sdcc or sccz80) and if anyone else comes up with a compiler we'd gladly plug that one in too. More interesting to us than clang/llvm for C compilation is using llvm to compile other languages like Fortran and Pascal. Then we'll get those to use the C library code and augment that with additional functions required by those languages. z88dk is a development kit for z80 computers not just a C compiler.

    As for sdcc, its C library is very minimal and is written in C which makes it slow and big. There are many things missing from the sdcc library. For example there is no concept of FILE and the entire scanf side of stdio is missing. For the z80, the library has machine code implementations of 16 and 8 bit math as well as about 4-5 important functions from string.h (memcpy, strcpy,..). I really like the fact Philip turned memcpy and a few others into built-ins (the code will be inlined rather than called to a subroutine). These things will perform ok and are really important in C programs in general. Once you step out of this, you will see performance issues. The 32-bit math is about 1.7 times slower than z88dk. The 64-bit math is heading toward 3x slower than z88dk. Floats are 3x slower than z88dk and result in 40% larger code. This kind of comparison will pervade through the whole library. The is not a shortcoming of the compiler -- this is a shortcoming of the library which is independent of the compiler.

    There is a reason why sdcc's library is written in C. sdcc targets 7 or 8 different microprocessors. A library written in C means it is portable to all 8 of those processors. Because there is only one body of code implementing the library, there is only one body of code to maintain. sdcc will never accept a processor-specific library into sdcc like z88dk's z80 library. They would require experts in each processor to maintain each separate library. The libraries would no longer be the same for each processor -- some processors would be better supported than others and people using sdcc would find it harder to use to target different processors because they would have to learn different libraries. The quirks of each, the level of support for each.

    sdcc will also never target specific architectures. It will never support a separate code base for the dozens of z80 machines in existence.

    z88dk is about doing all the things sdcc does not want to do. The solution is not to put z88dk into sdcc, it's to put sdcc into z88dk.
    [свернуть]

  6. #296

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

    По умолчанию

    Sayman, да... тормоза, ошибки, всё плохо, хайтек рулит немерено... А зачем uzix на Орионе?

  7. #297

    Регистрация
    16.02.2006
    Адрес
    Новосибирск
    Сообщений
    3,280
    Спасибо Благодарностей отдано 
    17
    Спасибо Благодарностей получено 
    91
    Поблагодарили
    54 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Oleg N. Cher, а зачем мы вообще под 8 бит что-то делаем?
    0A заповедей:
    I. Не удаляй каталог свой.
    II. Не удаляй до времени ни одного файла.
    III. Не кради файлы.
    IV. Не желай программы ближнего своего.
    V. Почитай BDOS и BIOS как родителей своих ...
    ---
    Sprinter resurrect:
    Telegram
    Discord
    Repo
    Forum

  8. #298

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

    По умолчанию

    Да кто зачем. Думаю, мы получаем радость от этого. Но я, например, не понимаю зачем на 8-битном компе ОС, которая жрёт почти всю память. Разве что посмотреть один раз. Просто это вне области моих интересов.

    Цитата Сообщение от Sayman Посмотреть сообщение
    а вот это уже вопрос вкуса - кому то это не экономно, а кому то лишние inc sp не экономно (а именно так sdcc и передаёт 8ми битные аргументы стэком, может посчитаем, как оно более оптимально по тактам передавать, просто на стек кинув значение или кинуть да ещё и стэком отдельно крутить?)
    А давай посчитаем. Я просто уверен, что Филипп тщательно продумал варианты, и раз сделал именно так, значит это имеет свои плюсы.

    Ты тут ругал лишний INC SP при передаче аргумента, но он экономит байт на стеке. А ты в курсе, что SDCC для передачи двух однобайтных аргументов делает один PUSH, а внутри ф-ции один POP? Твой хвалёный хайтек в этом случае сделает два PUSH и два POP. Это неэффективно. Если будем считать, учти этот случай тоже.

    У любого узкоспециализированного решения есть недостатки. Я uzix для Ориона не компилирую. Дурак (65 кб исходника монолитом) для прогоночной сборки собирается SDCC за 15 сек на моём стареньком одноядерном ноуте. Использует несколько модулей, которые не занимают время основной сборки (пересобираются только при их изменении). Плюс две библиотеки - Basic и Laser2, то же самое. Терпимо, сам виноват, надо было не монолитом делать. Да, отладочная сборка даёт 25 кб кода, релизная (с более высокой оптимальностью использования регистров) - 20 кб. Если я вдруг замечтаю заточить собирать всё это хайтеком или иар, понадобится чёртова уйма рутинной работы.

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

    Цитата Сообщение от Sayman Посмотреть сообщение
    iy начинает гонять только когда объявляю register на какую то переменную и то не всегда.
    Ты понимаешь разницу между "использует не всегда" и "гарантированно не использует вообще", как SDCC с опцией --reserve-regs-iy? А то можно таких проблем отгребсти, отлавливая непонятное поведение кода, что глюки SDCC покажутся сладким сном. ;-)

  9. #299

    Регистрация
    16.02.2006
    Адрес
    Новосибирск
    Сообщений
    3,280
    Спасибо Благодарностей отдано 
    17
    Спасибо Благодарностей получено 
    91
    Поблагодарили
    54 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Oleg N. Cher, этот спор ни к чему не приведёт. каждый сам для себя решает. нужна ему ос на 8ми битной машине или нет. отрицать тот факт. что на многих машинах есть какие-то оси, не имеет смысла. на Орионе уже есть целая шайка разных цпм подобных досов, есть порт юзикса, на мсх есть юзикс, есть мсх дос1 и мсх дос2, есть симбос. на спринтере есть своя дос эстекс. у профи тоже целая свора цпм подобных систем. моё мнение - если у машины памяти от 1 мб и более, то ось должна быть.
    касательно компиляторов - про sdcc я лишь указал на то. что он не является столь прекрасным и вкусным. как ты его описываешь. косяки есть, в том числе и у хайтеха (а как же без них). что-то лучше собрать там. что-то тут. собирать какие-либо проекты без применения оптимизаций так же не вижу смысла.
    однако я хочу отметить тот факт. что хайтех это ansi c компилятор. к примеру, на msx.org сильно не долюбливают sdcc и z88dk и там привыкли гонять родной ascii c (который вообще K&R) и хайтех. при этом sdcc позиционируется аналогично, как ansi, хотя почему-то начинает ошибки сыпать там, где хайтех согласно стандарта ansi сжирает прекрасно конструкции. при этом есть живой разработчик. которому много кратно указывали на эти ошибки, но воз, как говорится, и ныне там. всё это в сумме лично меня от него отталкивает. хотя вынужден временами им пользоваться. не сказать, что плююсь от него, нет, просто местами он мне сильно портит нервы при поиске косяков (например, не понимаю, почему в xnx у evo sdk при использовании последних билдов sdcc сыпяца ошибки и варнинги на одномерных массивах).
    у хайтеха свои гуси, но он, во1х, 80 каких-то годов, т.е. порядочно старше sdcc. во2х, он под цпм (версии для мс доса не использую, т.к. не удобно гонять постоянно dosbox). в 3х, он легко съедает те конструкции, на которых sdcc обычно сваливается. в 4х, если не использовать разные не стандартные фишки sdcc, вроде __naked или __fast_callee чего то там, то sdcc начинает проигрывать в скорости старому хайтеху. в 5х, у хайтеха тоже есть свой оптимизатор. и в 6х, хайтех тоже умеет использовать асмовые вставки и вообще, никто не мешает написать свои функции и процедуры на асме и к ним обращаться.
    0A заповедей:
    I. Не удаляй каталог свой.
    II. Не удаляй до времени ни одного файла.
    III. Не кради файлы.
    IV. Не желай программы ближнего своего.
    V. Почитай BDOS и BIOS как родителей своих ...
    ---
    Sprinter resurrect:
    Telegram
    Discord
    Repo
    Forum

  10. #300

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

    По умолчанию

    Цитата Сообщение от Sayman Посмотреть сообщение
    моё мнение - если у машины памяти от 1 мб и более, то ось должна быть.
    Я не знаю, сколько у Ориона памяти в моём понимании Орион - это что-то вроде РК86 на проце КР580 с примитивненьким граф. режимом. И, в моём же понимании, Корвет, не говоря уже о машинках на Z80, во многом круче Ориона. Могу ошибаться.

    Цитата Сообщение от Sayman Посмотреть сообщение
    про sdcc я лишь указал на то. что он не является столь прекрасным и вкусным. как ты его описываешь.
    Ну вообще-то каждый кулик своё болото хвалит, как известно. ;-) К чему привязан, с чем разобрался, с чем связаны приятные тёплые ламповые воспоминания, на чём были сделаны первые шаги и более поздние прорывы - к тому душой и прикипели. Но SDCC реально самый лучший компилятор для встраивания в ZXDev, я не жалею, что использую его. В то же время, никто не мешает прикрутить туда другой компилятор. Может сам займусь этим, но пока хватает SDCC.

    Цитата Сообщение от Sayman Посмотреть сообщение
    что-то лучше собрать там. что-то тут.
    Во, золотые слова!

    Цитата Сообщение от Sayman Посмотреть сообщение
    собирать какие-либо проекты без применения оптимизаций так же не вижу смысла.
    Так это же отладочная сборка, прогоночная. Целевая сильно дольше, экономим время. Можно использовать, если без оптимизации хватает памяти. Теоретически для SDCC можно ключик --max-allocs-per-node задрать так сильно, что код будет почти как закодированный вручную ;-) Чем тебе не супер-компиляция. 6 кб кода на оптимизации только по регистрам, это ли не круто. Но зато офигенно долго. Но что же делать, нейронные сети в регистровых аллокаторах для генерации Z80-кода ещё не научились юзать. ;-)

    Цитата Сообщение от Sayman Посмотреть сообщение
    однако я хочу отметить тот факт. что хайтех это ansi c компилятор. к примеру, на msx.org сильно не долюбливают sdcc и z88dk и там привыкли гонять родной ascii c (который вообще K&R) и хайтех. при этом sdcc позиционируется аналогично, как ansi, хотя почему-то начинает ошибки сыпать там, где хайтех согласно стандарта ansi сжирает прекрасно конструкции.
    Опыт подсказывает, что в стандартах Си есть такие тонкости, про которые не знают даже разработчики Си-компиляторов. Например, в более старых версиях SDCC константные массивы ничем не отличались от обычных неконстантных, даже мувились из одной секции в другую при старте, дублируя данные дважды. Позже эта погрешность была исправлена, но при этом возник спор, который, слава богу, разрешился в правильном и желательном для нас направлении. А одну багу SDCC во фронт-энде (некритичную), которую я зарепортил, Филипп даже не смог исправить, она до сих пор висит наверно. С компиляторами Си всё сложно. Неидеально. Приходится искать компромиссы. Так что всё верно, собираем то тем, то сем. Для винды я плотно сижу на MinGW, иногда поглядывая в сторону новых версий, чего новенького появляется. Но и там есть проблемы, например, с отбрасыванием неиспользуемого кода (не весь отбрасывается). Это практически та же проблема, из-за которой приходится разрезать исходник для компиляции SDCC специальной утилитой, чтобы библиотека смартлинковалась.

    Цитата Сообщение от Sayman Посмотреть сообщение
    хайтех тоже умеет использовать асмовые вставки и вообще, никто не мешает написать свои функции и процедуры на асме и к ним обращаться.
    Ну собсно да, как же иначе.

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

Страница 30 из 38 ПерваяПервая ... 262728293031323334 ... ПоследняяПоследняя

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

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

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

Ваши права

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