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

User Tag List

Страница 4 из 8 ПерваяПервая 12345678 ПоследняяПоследняя
Показано с 31 по 40 из 74

Тема: Осваиваем Hi-Tech C v3.09 для CP/M

  1. #31
    Guru Аватар для Shiny
    Регистрация
    19.01.2017
    Адрес
    г. Арзамас
    Сообщений
    2,158
    Записей в дневнике
    39
    Спасибо Благодарностей отдано 
    3
    Спасибо Благодарностей получено 
    37
    Поблагодарили
    24 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

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

  3. #32
    Guru Аватар для Totem
    Регистрация
    13.12.2007
    Адрес
    Архангельск
    Сообщений
    2,189
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    3
    Спасибо Благодарностей получено 
    11
    Поблагодарили
    11 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alcoholics Anonymous Посмотреть сообщение
    look at code quality.
    it would be excellent, You have more experience. If You dont have free time, I can help you, if you send example or source code for testing.
    Easy way have more 30 days, have copy clear virtual system for re intsall softotols
    Цитата Сообщение от Alcoholics Anonymous Посмотреть сообщение
    The package they offer for download is missing dlls (z180.dll for me)
    Yes, Zilog cut its, for softotools as commercial part and ZDS C compiler for ez80, its have 2 model, "large", for 24 bit adresss and "small" 64K segments Z80.

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

    Oleg N. Cher,
    Прошу извинить за столь бесцеремонное вторжение в тему
    Ты слыхал как грузится Flyshark ?! нет, совсем не тот, что на дискете...а Flyshark, тот самый блин Flyshark...тот ,что был когда то на кассете...
    zx spectrum 48 issuse 6a, Ленинград-1, zx spectum 128 +2 grey,Пентагон-128, ZXM-Phoenix 5.02 ( assembly)

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

    По умолчанию

    Шынни, спасибо, но лично мне ничего нового Вы не сообщили. Вопрос был: как обернуть этот DI в макрос?

  5. #34
    Guru Аватар для Shiny
    Регистрация
    19.01.2017
    Адрес
    г. Арзамас
    Сообщений
    2,158
    Записей в дневнике
    39
    Спасибо Благодарностей отдано 
    3
    Спасибо Благодарностей получено 
    37
    Поблагодарили
    24 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Вопрос был: как обернуть этот DI в макрос?
    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Какой будет аналог этого кода в Hi-Tech C v3.09 ?
    Теперь это так называется? А с какой целью нужно обернуть?

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

    По умолчанию

    #define Basic_Init() __asm di __endasm
    для хайтеха в мануале была конструкция вида:
    #define blah() asm(" di")
    но из-за какого то бага в компиляторе эта конструкция не работает. так что подобное для 3.09 не работает. для досоввой версии оно работает.
    чтобы избавится от вызова ncsv надо использовать оптимизатор, он его меняет на csv, но оптимизатор съедает ваш асмовый код. поэтому для хайтеха будет плохой практикой в одном файле писать на си и на асме и пихать этот файл оптимизатору. выносите асмы все в отдельный асм файл, а си файлы прогоняйте через оптимизатор.
    и делать pop ix не обязательно (первый съём со стека = съём адреса возврата, это правило работает и в sdcc), но желательно ix сохранять, а при выходе восстановить.
    скачайте наработки Error404 в его темах про Орион, там у него много примеров для сборки кода да и самого кода предостаточно для понимая.
    0A заповедей:
    I. Не удаляй каталог свой.
    II. Не удаляй до времени ни одного файла.
    III. Не кради файлы.
    IV. Не желай программы ближнего своего.
    V. Почитай BDOS и BIOS как родителей своих ...
    ---
    Sprinter resurrect:
    Telegram
    Discord
    Repo
    Forum

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

    По умолчанию

    Цитата Сообщение от Шынни Посмотреть сообщение
    Теперь это так называется? А с какой целью нужно обернуть?
    Раз Вы цитируете меня, то не нужно передёргивать и вырывать фразу из контекста. Надо так:

    Цитата Сообщение от Oleg N. Cher
    Какой будет аналог этого кода в Hi-Tech C v3.09 ?
    Код:
    #define Basic_Init() __asm di __endasm
    Разве это не:
    Цитата Сообщение от Oleg N. Cher
    Вопрос был: как обернуть этот DI в макрос?
    ?

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

    Sayman, насколько я понял, asm("команда") в хайтеке версии 3.09 вообще ещё не реализовано. Док касается более новых версий.

    Что до зачем это нужно. Я пытаюсь повторить на хайтек компилере то, что у меня уже реализовано на SDCC. Если распихивать то, что нельзя похабить оптимизатору непременно в отдельные .asm-файлы и запихивать в библиотеки (а, видимо, так и придётся сделать), а в Си-файлах писать только на Си, то об эффективности, легко достижимой в SDCC, придётся забыть. А, возможно, и о некоторых возможностях конфигурирования библиотек "на лету" (без перекомпиляции).

    Про хайтек я понял то, что все сишные функции всегда вызываются через csv или ncsv, с PUSH IY/IX, и этот код не вырезает даже оптимизатор. Если написать пустую ф-цию main, для неё будет сгенерен один RET, но кусок кода из CSV.AS всё равно будет прилинкован. Таким образом, доступ ко всем аргументам и локальным переменным внутри сишной функции происходит с учётом сохранённых IY/IX на стеке. То есть мои манипуляции с обходом сохранения IY ни к чему хорошему не приводят, только к багам.

    Отказаться от обязательного автоматического сохранения IY/IX можно только в функциях, написанных на ассемблере (не встроенном!). В сишных - НЕЛЬЗЯ.

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

    По умолчанию

    Выкладываю подсистему ZXDev3, основанную на Hi-Tech C v3.09 вместо SDCC. Это мой реверанс в сторону любителей сего компилятора. Я реализовал всего три процедуры из библиотеки Basic, убедился, что это возможно, и мне стало неинтересно.

    ZXDev3 называется так по версии Hi-Tech C. Основанная на седьмой может называться ZXDev7. Если когда-нибудь будет сделана подсистема, основанная на IAR C, она будет называться ZXDevI. Но всё это я не планирую. Планирую осваивать z88dk, тем более что Alcoholics Anonymous очень дружелюбен и отзывчив, отвечает на все вопросы очень подробно и прислушивается к хорошим советам. Да, отдельная подсистема ZXDevZ не планируется, вместо этого zsdcc будет встроен в основную подсистему ZXDev.

    В одно нажатие F12 собирается вот это (запускается компиляция в эмуляторе CP/M, делается tap и запускается):

    Код:
    (*$MAIN*) MODULE HelloC; IMPORT b := Basic;
    BEGIN
      b.BORDER(3);
      b.COLOR(4); b.PRSTR("Hello ");
      b.COLOR(5); b.PRSTR("Hello ");
      b.COLOR(6); b.PRSTR("Hello ");
    END HelloC.
    Бинарь сей прожки занимает 179 байт. Меньше мне сделать не удалось (в SDCC легко).

    Результирующий код выглядит обычно, параметры передаются на стеке (в SDCC иногда можно в регистрах). В целом довольно нормально, жить можно. Больше ничего в этом направлении делать не планирую. Разве что попробую собирать хайтеком порт игры Dash, чисто чтобы сравнить качество кода. Но я уверен, оно будет сильно ниже, чем у zsdcc.

    ZXDev3.7z

    Это снапшот. По мере дальнейшей разработки он будет устаревать. Актуальная версия будет жить здесь:


    Баг-репорты и пожелания приветствуются.

    Если будете что-то делать в плане библиотек для Hi-Tech C v3.09, я заинтересован включить эти наработки в подсистему ZXDev3.

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

    По умолчанию

    Цитата Сообщение от Totem Посмотреть сообщение
    it would be excellent, You have more experience. If You dont have free time, I can help you, if you send example or source code for testing.
    Easy way have more 30 days, have copy clear virtual system for re intsall softotols
    Totem (or anyone else) are you interested in running some benchmarks for compilers I don't have access to?

    I'm getting ready to run benchmarks again and I'd like to compare against as many z80 compilers as possible. I'd also like to try z180 compiles too. We don't have a timer for the z180 yet but if we can get some binaries out of that we can maybe time them in the future when our simulator is updated.

    Currently the benchmarks we have are: dhrystone 2.1, whetstone 1.2, sieve and pi. I'd like to add Coremark this time around but we are not allowed to distribute the source code for this one. If anyone has suggestions for more benchmarks, I'm happy to consider them.

    The source code for these benchmarks can be found in: https://github.com/z88dk/z88dk/tree/...LES/benchmarks
    I've cleaned up the code and am in the process of making sure they run on z88dk. Dhrystone 2.1 is finished (the z88dk/zsdcc score is 321) but the others will be updated in the next day or two as they are verified to be working.

    I have access to sccz80, zsdcc, sdcc, hitech v309 cpm, hitech v750 msdos for running the benchmarks. I will try Zilog's tools as well but I don't know if I can persuade them to produce code yet. If anyone has more compilers available and you are interested in running the benchmarks, let me know. If you're an expert at getting good performance out of hitech c, you may do a better job than me and I'd be interested in hearing from you too.

    =====

    [B] Тотем [/ B] (или кто-либо другой) вы заинтересованы в запуске некоторых тестов для составителей у меня нет доступа?

    Я готовлюсь снова запустить тесты, и я хотел бы сравнить против как многие Z80 компиляторов, как это возможно. Я также хотел бы попробовать Z180 компилирует тоже. У нас нет таймер для Z180 еще, но если мы можем получить некоторые двоичные файлы из этого мы можем, возможно, их тайм в будущем, когда наш тренажер обновляется.

    В настоящее время у нас есть тесты являются: Dhrystone 2.1, оселок 1.2, решето и пи. Я хотел бы добавить CoreMark в этот раз, но мы не имеем права распространять исходный код для этого. Если у кого есть предложения по более критериев, я рад рассмотреть их.

    Исходный код для этих тестов можно найти в: https://github.com/z88dk/z88dk/tree/...LES/benchmarks
    Я очистил код и нахожусь в процессе убедившись, что они работают на z88dk. Dhrystone 2.1 закончена (счет z88dk / zsdcc составляет 321), а остальные будут обновлены в следующий день или два, как они проверяются, чтобы работать.

    У меня есть доступ к sccz80, zsdcc, SDCC, Hitech V309 имп, Hitech V750 MSDOS для запуска тестов. Я попытаюсь инструменты Zilog как хорошо, но я не знаю, смогу ли я убедить их производить код еще. Если у кого есть больше компиляторы доступны и вы заинтересованы в проведении контрольных показателей, дайте мне знать. Если вы являетесь экспертом в получении хорошей производительности из Hitech C, вы можете сделать лучше, чем у меня, и мне было бы интересно услышать от вас тоже.

  10. #39
    Moderator
    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    4,577
    Спасибо Благодарностей отдано 
    61
    Спасибо Благодарностей получено 
    106
    Поблагодарили
    92 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alcoholics Anonymous Посмотреть сообщение
    У меня есть доступ к sccz80, zsdcc, SDCC, Hitech V309 имп, Hitech V750 MSDOS для запуска тестов. Я попытаюсь инструменты Zilog как хорошо, но я не знаю, смогу ли я убедить их производить код еще. Если у кого есть больше компиляторы доступны и вы заинтересованы в проведении контрольных показателей, дайте мне знать. Если вы являетесь экспертом в получении хорошей производительности из Hitech C, вы можете сделать лучше, чем у меня, и мне было бы интересно услышать от вас тоже.
    Что-то не видел раньше эту тему. Вставлю свои пять копеек.
    Лично я не особенно понимаю весь этот спичь от Олега за производительность, использование лишнего индексного регистра, jp вместо ret и прочие изыски, которые более выглядят как желание докопаться в пользу более полюбившегося варианта компилятора, уникальные особенности которого позволяют где-то чуть меньше трудиться, чем делая универсальный и в силу этого очевидный для "человека с улицы" вариант. Для меня гораздо важнее предсказуемость компилятора, которая прямо проистекает от того насколько порядок голове у его автора(ов), и общеупотребимость (что прямо противоположно "уникальным особенностям") - "сел и поехал". Остальное (если вдруг действительно лишний джамп все замедлил) решаемо заменой процессора на с частотой побольше.

    По первому пункту у SDCC все было очень грустно (по крайней мере в последней версии SDCC что я использовал - 2.9х - заведомо исправный код компилировался без ошибок и варнингов, но не работал, а проходить 25кб консольным отладчиком - нуегонафиг), тогда как Hitec тот же код собирал и он работал (при в полтора меньшем размере кода на выходе). Возможно, сейчас стало получше, но эксперимениты с любительскими клонами SmallC я завязал. По второму пункту тоже очевидно: ANSII компилятор (т.е. как я понимаю Z88dk сразу выпадает) с максимум полдюжиной ключей и готовым выхлопом под наиболее распространенныю платформу для которой есть 100500 эмуляторов (CP/M) куда как проще освоить и дальше видоизменять {адреcа посадки и чего угодно}, чем компилер с дикой кучей ключей и "изкоробки" не компилирующий в среду, которую должен знать и уметь любой уважающий себя компилер для Z80 (что тоже говорит о кругозоре авторов). А так то конечно да - имея под попой PC986 с биллионами байт памяти и биллионами же герц тактовой казалось бы не написать нормальный компилятор С?! Да за пояс заткнем эти CP/M c их 64кб, дискеткой в 400кб и смешным процессором. )) #скоро

    Вот тут лежит моя адаптация UZIX где в качестве компилятора использован HitechC v3(+эмулятор+make). Там же есть библиотеки в исходниках (libc, libf), мейкфалы, на случай если кому пригодится в качестве примера или для какого дерибана. Все выложено, в том числе в темах на форуме, стоило столько шишек по второму кругу собирать чтобы потом обхаять (когда можно было взять готовое и не париться), что как бы характеризует.
    Кстати из смешного, FUZIX (который не сложнее Uzix) где компилятором взяли SDCC, AFAIK собирается только одной определенной версией этого чудесного компилятора, с набором костылей (к компилятору понятно).
    Последний раз редактировалось Error404; 21.03.2017 в 16:21.
    Лучше сделать и жалеть, чем не сделать и жалеть.

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

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

    По умолчанию

    Знаете что больше всего угнетает. Пиление на коленке никому не нужного uzix вместо того чтобы сделать, например, полезный баг-репорт в копилку SDCC. Таким образом, потратив силы не на самоудовлетворение, а на пользу для ещё кого-то, своих же собратьев по перу. А не лить помои на SDCC "потому что хатех запулился, а SDCC не запулился".

    Мой же выбор очевиден. Вылизали хайтех? Ну да, вылизали, это же коммерческий компилятор. Развивается хайтех? А вот то-то же.

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

    Могу добавить, что SDCC с версии 3.6.0 очень стабилен, я давно уже не сталкиваюсь с багами. За всё время, которое я работаю с SDCC, а это 6-7 лет, качество кода выросло, полезных фич добавилось, компилятор стал намного лучше. Вот о чём надо писать, а не "старая версия весьма баговита, а с тех пор я не пробывал".

    А если есть баги, то в студию их. Кстати, некоторые "баги", с которыми столкнулся я, - они вовсе не в SDCC. Просто программа на Си переносима весьма условно, а на деле может быть масса тонких несостыковок. И чем аффтар поручится, что его вопли связаны именно с багами в компиляторе? Ему же лень в этом ковыряться.

Страница 4 из 8 ПерваяПервая 12345678 ПоследняяПоследняя

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

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

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

Похожие темы

  1. Осваиваем микрокомпьютер (1 и 2 ч.)
    от kas29 в разделе Пресса
    Ответов: 2
    Последнее: 06.02.2020, 01:27
  2. Видеоподкаст: "Old Gold Tech"
    от unbeliever в разделе Разный софт
    Ответов: 1
    Последнее: 12.06.2010, 13:41

Ваши права

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