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

User Tag List

Страница 5 из 91 ПерваяПервая 123456789 ... ПоследняяПоследняя
Показано с 41 по 50 из 907

Тема: Мощная среда ZXDev для разработки НА ПЯТИ ЯЗЫКАХ для ZX готова к тестированию

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

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Благодаря помощи Филиппа Краузе и Eltaron’а реализована экспериментальная поддержка модели вызова fastacall (передача параметров в регистрах). Из-за отсутствия (пока) в SDCC поддержки fastcall присутствует серьёзное ограничение: параметры должны быть только константами, вычислямыми в процессе компиляции. Фишка по умолчанию отключена. Включить можно в Libs/BasicCfg.h

    С использованием модели fastcall получается такой код:
    Код:
    B.BORDER(B.Black); B.PAPER(B.Green); B.CLS;
    
    ;HelloWorld.c:15: Basic_BORDER(0);
    	xor a,a
    	call 0x229B
    ;HelloWorld.c:16: Basic_PAPER(4);
    	ld c,#4
    	call	_Basic_PAPER_fastcall
    ;HelloWorld.c:17: Basic_CLS();
    	call	_Basic_CLS
    В примере две функции, обе с одним параметром: Basic_BORDER, Basic_PAPER. Почему для первой генерится передача параметра в регистре А, а для второй функции - в регистре С? Это такой странный выход транслятора или просто пример "с листа"?
    Лучше сделать и жалеть, чем не сделать и жалеть.

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

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

    По умолчанию

    Это, разумеется, сделано для эффективности и компактности машинного кода. Если знаете Си, то вот как именно это реализовано:
    Код:
    #define __hash__ #
    #define __id__(x) x
    #define __ld_a__(x) if(x==0) {__asm xor a,a __endasm;}else{__asm ld a,__id__(__hash__)x __endasm;}
    #define __ld_c__(x) __asm ld c,__id__(__hash__)x __endasm
    
    import void Basic_BORDER_stdcall (SHORTINT color);
    #ifndef BORDER_fastcall
      #define Basic_BORDER Basic_BORDER_stdcall
    #else //BORDER_fastcall
      #define Basic_BORDER(color) __ld_a__(color); \
        __asm \
        call 0x229B \
        __endasm;
    #endif
    
    import void Basic_PAPER_stdcall (SHORTINT color);
    import void Basic_PAPER_fastcall (void /* Register C */);
    #ifndef PAPER_fastcall
      #define Basic_PAPER Basic_PAPER_stdcall
    #else //PAPER_fastcall
      #define Basic_PAPER(color) __ld_c__(color); Basic_PAPER_fastcall()
    #endif

  3. #43
    Activist Аватар для Sergey
    Регистрация
    23.12.2006
    Адрес
    Славный город Самара
    Сообщений
    473
    Спасибо Благодарностей отдано 
    93
    Спасибо Благодарностей получено 
    12
    Поблагодарили
    8 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Приветствую, Олег!
    Интеллекта не хватает, твою систему освоить. Поэтому пока балуюсь только гольным sdcc.
    Не подскажешь ли, как мне 1) crt0.rel свой сделать, 2) как на выходе бинарные файлы получать вместо ihx?
    С уважением,
    Gris / Red Triangle.
    _____________________________________
    ZX-EVO/TS-Labs config/NGS/HDD/SD-card
    Amiga A1200/Blizzard 1230@50/32/60GB
    Amiga A1200/Apollo 1260@66/32/60GB
    UnAmiga (C5) AGA GM7123 VideoDAC

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

    По умолчанию

    Цитата Сообщение от Sergey Посмотреть сообщение
    Приветствую, Олег!
    Интеллекта не хватает, твою систему освоить. Поэтому пока балуюсь только гольным sdcc.
    Не подскажешь ли, как мне 1) crt0.rel свой сделать, 2) как на выходе бинарные файлы получать вместо ihx?
    Та ладно, Сергей, не прибедняйтесь. Не так там уж сложно всё. Впрочем, готов поотвечать на вопросы в аське, ирц, жаббере или на форуме ZX.Oberon2.Ru/Forum, милости прошу, пишите ЛС, если есть охота.

    crt0.rel я никогда не делал, даже не баловался. Если честно, я даже не знаю зачем оно надо. Тут нам вместе надо обратиться к гуру SDCC.

    Перегнать IHX в BIN можно несколькими способами. ZXDev использует утилиту Hex2bin, скачивается отсюда: http://sourceforge.net/projects/hex2bin. Есть планы сделать утилиту, напрямую конвертирующую IHX в TAP/TZX/TRD (с добавкой произвольного загрузчика). Первая версия уже почти-почти готова (но пока умеет только BIN в TAP, без IHX).

  5. #45
    Sinclair User Аватар для Eltaron
    Регистрация
    16.01.2005
    Адрес
    Ekaterinburg
    Сообщений
    2,045
    Записей в дневнике
    7
    Спасибо Благодарностей отдано 
    143
    Спасибо Благодарностей получено 
    463
    Поблагодарили
    326 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Sergey Посмотреть сообщение
    как мне 1) crt0.rel свой сделать, 2) как на выходе бинарные файлы получать вместо ihx?
    http://zx.pk.ru/showpost.php?p=539849&postcount=36
    Граф Дракула наш кумир, патамушта он вомпир!
    VKINK 9 : BORDER NOT PI

  6. #46
    Veteran Аватар для Oleg N. Cher
    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,640
    Спасибо Благодарностей отдано 
    2,180
    Спасибо Благодарностей получено 
    137
    Поблагодарили
    103 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    По реквесту AlCo сделал возможность автосборки и запуска Оберон-программ для Спека нажатием F12 (можно переделать на любую другую комбинацию или отдельную клавишу). Сделано несложно, а именно: для модуля Module.odc (или Mod/Module.odc) ищется одноименный файл Obj/Module.bat, всё остальное делает уже сам батник. Проверяет существование откомпилированных модулей (при необходимости перекомпилируя их), вызывает сишный компилер, проверяет не вернул ли он ошибку; если да, то останавливается; если нет, для основного модуля вызываются Hex2bin, bin2trd, далее целевой собранный TRD-шник запускается в эмуле, связанном с расширением .trd. Запускать TRD-шник автоматически при старте умеют не все эмули. Бороться с этим планирую переходом на формат TAP.

    Есть ещё варианты как сделать. Например, если одноименного батника для модуля нет, можно запускать в зависимости от выбранной команды один из батников (Bin/compile, Bin/build, Bin/run) на всю подсистему, они-то и будут знать как компилировать, собирать и запускать программы заданным компилером. Ещё вариант: ручной выбор из меню компилятора и целевой платформы, а батники будут лежать в папке bin компилятора. Эти варианты обдумываются.
    Последний раз редактировалось Oleg N. Cher; 15.01.2014 в 00:04.

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

  8. #47
    Super Moderator Аватар для Ewgeny7
    Регистрация
    03.07.2005
    Адрес
    Санкт-Петербург
    Сообщений
    10,168
    Спасибо Благодарностей отдано 
    146
    Спасибо Благодарностей получено 
    76
    Поблагодарили
    51 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Прошу прощения, а под х64 будет работать? Пока что посылает лесом, ругается на х64.
    ScorpEvo ZS 1024 turbo+ CF-HDD/FDD/Mouse/SMUC 3.1/ProfROMse/NeoGS/ZC
    Speccy-2007 128/AY/TR-DOS

    Сайт с документацией к "Scorpion ZS 256"

  9. #48
    Veteran Аватар для Oleg N. Cher
    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,640
    Спасибо Благодарностей отдано 
    2,180
    Спасибо Благодарностей получено 
    137
    Поблагодарили
    103 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Под x64 не тестировалось, но по идее никаких препятствий быть не должно. А как именно ругается?

  10. #49
    Master
    Регистрация
    04.12.2008
    Адрес
    г. Черкассы, Украина
    Сообщений
    957
    Спасибо Благодарностей отдано 
    4
    Спасибо Благодарностей получено 
    11
    Поблагодарили
    8 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    А как именно ругается?
    Вложение 40058
    Запускал и в режиме совместимости, результат тот же.

  11. #50
    Master
    Регистрация
    04.12.2008
    Адрес
    г. Черкассы, Украина
    Сообщений
    957
    Спасибо Благодарностей отдано 
    4
    Спасибо Благодарностей получено 
    11
    Поблагодарили
    8 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Удалось найти пока только это: http://zx.pk.ru/showthread.php?t=18315 (тот же) и то что во вложении.

Страница 5 из 91 ПерваяПервая 123456789 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. мощная игрушка
    от ZEman в разделе Игры
    Ответов: 129
    Последнее: 23.03.2024, 17:05
  2. Ответов: 5
    Последнее: 20.06.2011, 03:18
  3. Видеоконтроллер из пяти микросхем
    от zx-kit в разделе Изображение
    Ответов: 20
    Последнее: 31.03.2011, 14:48

Метки этой темы

Ваши права

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