User Tag List

Показано с 1 по 10 из 377

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

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

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

    Регистрация
    15.02.2015
    Адрес
    г. Могилёв, Беларусь
    Сообщений
    932
    Спасибо Благодарностей отдано 
    15
    Спасибо Благодарностей получено 
    120
    Поблагодарили
    74 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Кто-нибудь сделайте и выложите небольшой проект с двумя-тремя функциями и ассемблерными вставками. У меня чего-то выдаёт ошибку - <a> неправильное размещение в памяти.

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

    Нашёл ошибку. Написал ld a, 2 ,а надо было ld a, #2.
    Какой файл crt0.s нужен для спекки?
    ¡Un momento, señor fiscal!


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

  3. #2

    Регистрация
    23.12.2006
    Адрес
    Славный город Самара
    Сообщений
    484
    Спасибо Благодарностей отдано 
    135
    Спасибо Благодарностей получено 
    16
    Поблагодарили
    12 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Smalovsky Посмотреть сообщение
    Кто-нибудь сделайте и выложите небольшой проект с двумя-тремя функциями и ассемблерными вставками.
    Прилагаю исходник одной игрушки
    Писалось в качестве примера разработки программ для zx48 на SDCC.
    Весь проект не даю, т.к. без установленного интерпретатора REXX, всё равно, не соберёшь.
    Вложения Вложения
    • Тип файла: 7z 2048.7z (4.8 Кб, Просмотров: 114)
    С уважением,
    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. #3

    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    4,581
    Спасибо Благодарностей отдано 
    64
    Спасибо Благодарностей получено 
    112
    Поблагодарили
    97 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Smalovsky Посмотреть сообщение
    Нашёл ошибку. Написал ld a, 2 ,а надо было ld a, #2.
    Решеточки, какая прелесть. Вот как ни зайду в ветку про SDCC крайние лет n-дцать, все время одна и та же мысль - если автор папуас, как можно на выходе ждать шыдевр? Годами ждать, все это время перебиваясь на костылях.
    Последний раз редактировалось Error404; 03.03.2016 в 10:27.
    Лучше сделать и жалеть, чем не сделать и жалеть.

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

  5. #4

    Регистрация
    23.12.2006
    Адрес
    Славный город Самара
    Сообщений
    484
    Спасибо Благодарностей отдано 
    135
    Спасибо Благодарностей получено 
    16
    Поблагодарили
    12 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Error404 Посмотреть сообщение
    Решеточки, какая прелесть. Вот как ни зайду в ветку про SDCC крайние лет n-дцать, все время одна и та же мысль - если автор папуас, как можно на выходе ждать шыдевр? Годами ждать, все это время перебиваясь на костылях.
    "В огороде бузина а в Киеве дядька" - какое отношение синтаксис ассемблера имеет отношение к компилятору Си?!
    Кстати, а где твой Си-компилятор?
    Представляешь, а в многих ассемблерах шестнадцатиричное число обозначается символом доллара, а решётка означает непосредственную адресацию. SDCC - многоцелевой компилятор, - с чего бы ему заморачиваться на привычный спектрумистам синтаксис?!
    К слову, сейчас можно альтернативный ассемблер использовать.
    Поливать чужой труд грязью много ума не надо - любое быдло справится. А на сегодняшний день SDCC - объективно, лучший бесплатный Си-компилятор для Z80. Если сам не способен на что-то лучшее, хотя бы имей уважение к тем, кто что-то полезное делает. Делает в меру своих способностей, а не хабалит на форумах, о "кривости" чужих рук. Не "папуас", лять, - неосилятор "решётки".
    Последний раз редактировалось Sergey; 11.03.2016 в 22:35.
    С уважением,
    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

  6. #5

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

    По умолчанию

    Цитата Сообщение от Sergey Посмотреть сообщение
    "В огороде бузина а в Киеве дядька" - какое отношение синтаксис ассемблера имеет отношение к компилятору Си?!
    Кстати, а где твой Си-компилятор?
    Представляешь, а в многих ассемблерах шестнадцатиричное число обозначается символом доллара, а решётка означает непосредственную адресацию. SDCC - многоцелевой компилятор, - с чего бы ему заморачиваться на привычный спектрумистам синтаксис?!
    К слову, сейчас можно альтернативный ассемблер использовать.
    Поливать чужой труд грязью много ума не надо - любое быдло справится. А на сегодняшний день SDCC - объективно, лучший бесплатный Си-компилятор для Z80. Если сам не способен на что-то лучшее, хотя бы имей уважение к тем, кто что-то полезное делает. Делает в меру своих способностей, а не хабалит на форумах, о "кривости" чужих рук. Не "папуас", лять, - неосилятор "решётки".
    Очень интересное замечание, только ассемблер отдельно взятых си компиляторов, к сожалению. только к ним и относятся и никакими другими не заменить. Не припоминаю чтобы к сдцц можно было бы прикрутить тот же sjasm для генерации z80 кода. Опять таки, довольно справедливое замечание про решётку. Похоже, что асм от сдцц вообще десятичные числа не воспринимает, точнее воспринимает но, только с этой пресловутой решёточкой. сдцц, как и z88dk, базируется на древнем цпм компиляторе small-c. Только вот z88dk по части асма более близок к пользователю, а в sdcc всё сильно извратили. К слову говоря о бесплатности и "лучшести" - не совсем близкие значения. Может для всяких pic`ов и подобных он и лучший, но для z80 не фонтан, откровенно говоря. Даже твои тесты показывают, что sdcc уступает древнему и бесплатному htc (кстати, ты табличку так и не подправил).
    0A заповедей:
    I. Не удаляй каталог свой.
    II. Не удаляй до времени ни одного файла.
    III. Не кради файлы.
    IV. Не желай программы ближнего своего.
    V. Почитай BDOS и BIOS как родителей своих ...
    ---
    Sprinter resurrect:
    Telegram
    Discord
    Repo
    Forum

  7. #6

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

    По умолчанию

    Цитата Сообщение от Sayman Посмотреть сообщение
    Очень интересное замечание, только ассемблер отдельно взятых си компиляторов, к сожалению. только к ним и относятся и никакими другими не заменить.
    z88dk заменяет задний конец SDCC с его собственным. Выход SDCC переводится в стандартный Zilog нотации, а затем собрана z80asm, ассемблере z88dk в. Все ассемблере в проекте написано для z80asm.

    Вот некоторые из SDCC выход при использовании через z88dk, где вы можете увидеть стандартные обозначения для индексированной адресации регистра:

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


    z88dk replaces sdcc's back end with its own. sdcc's output is translated to standard zilog notation and then is assembled by z80asm, z88dk's assembler. All assembly language in a project is written for z80asm.

    Here's some output from sdcc when used through z88dk where you can see standard notation for indexed register addressing:
    [свернуть]


    Код:
    	ld	hl,0x0006
    	push	hl
    	push	bc
    	call	__divsint_callee
    	ex	de,hl
    	ld	hl,0x0001
    	add	hl,sp
    	ld	(ix-2),l
    	ld	(ix-1),h

    Там ничто не мешает никому делать то же самое для любого другого сборщика, но вы должны иметь достаточно способный ассемблер действовать в качестве замены. Ассемблер должен иметь связывающую способность и она должна реализовать секции кода. Есть только несколько свободных Z80 монтажников, доступных, которые реализуют эти возможности. (Sjasm не является одним из них)

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


    There is nothing stopping anyone from doing the same for any other assembler but you have to have a sufficiently capable assembler to act as replacement. The assembler needs to have linking ability and it must implement code sections. There are only a handful of free z80 assemblers available that implement these capabilities. (sjasm is not one of them)
    [свернуть]


    Не припоминаю чтобы к сдцц можно было бы прикрутить тот же sjasm для генерации z80 кода. Опять таки, довольно справедливое замечание про решётку. Похоже, что асм от сдцц вообще десятичные числа не воспринимает, точнее воспринимает но, только с этой пресловутой решёточкой. сдцц, как и z88dk, базируется на древнем цпм компиляторе small-c. Только вот z88dk по части асма более близок к пользователю, а в sdcc всё сильно извратили. К слову говоря о бесплатности и "лучшести" - не совсем близкие значения. Может для всяких pic`ов и подобных он и лучший, но для z80 не фонтан, откровенно говоря.
    Когда SDCC используется через z88dk, он получает доступ к библиотекам z88dk ассемблере в. Ассемблере снова близко к пользователю.

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


    When sdcc is used through z88dk, it gains access to z88dk's assembly language libraries. The assembly language is again close to the user.
    [свернуть]


    Даже твои тесты показывают, что sdcc уступает древнему и бесплатному htc (кстати, ты табличку так и не подправил).
    Вы не можете судить на основе выборки из очень короткой подпрограммы, написанной на C. Вам нужно больше и большие примеры, чтобы сделать общие выводы. SDCC иногда не генерирует код, но нам удалось улучшить, что, когда SDCC используется через z88dk. Вот результаты некоторых тестов мы запускаем с использованием больших программ и стандартных эталонных тестов:

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


    You can't judge based on a sample of a very short subroutine written in C. You need more and larger examples to draw general conclusions. sdcc does sometimes generate bad code but we have managed to improve on that when sdcc is used through z88dk. Here are the results of some tests we've run using large programs and standard benchmarks:
    [свернуть]


    * Dhrystone 2.1 (common integer benchmark)

    z88dk+sdcc: 7136 bytes, 310.29 dhrystones / second
    sdcc: 7223 bytes, 250.12 dhrystones / second
    htc 7.50: 7040 bytes, 265.11 dhrystones / second

    Almost the same size, htc is 17% slower.

    * Whetstone 1.2 (common floating point benchmark)

    z88dk+sdcc: 5914 bytes, 4.351 kwips
    sdcc: 14463 bytes, 1.418 kwips
    htc 7.50: 6872 bytes, crashes ( htc 3.50 for cpm 6.276 kwips )

    С плавающей запятой часто выходит из строя и генерирует неправильные ответы с 7.50 HTC. Я не знаю, если HTC 7.80 зафиксировано, что. Время вместо взято из 3.50 для HTC имп и быстрее, чем z88dk + SDCC. Это потому, что z88dk реализует 48-битный с плавающей точкой, тогда как реализует HTC 32-битной плавающей точкой.

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


    Floating point frequently crashes and generates wrong answers with htc 7.50. I don't know if htc 7.80 fixed that. The time is instead taken from htc 3.50 for cpm and is faster than z88dk+sdcc. This is because z88dk implements a 48-bit float whereas htc implements a 32-bit float.
    [свернуть]


    * Pi (tests long integer arithmetic)

    z88dk+sdcc: 6165 bytes, 15 min 47 sec
    sdcc: 6805 bytes, 37 mins 3 sec
    htc 7.50: 6332 bytes, 23 mins 0 sec

    Есть несколько вариантов для z88dk + SDCC, самый быстрый из которых 5 мин 40 сек и 7500 байтов. Это в четыре раза быстрее, чем HTC.

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


    There are several variations for z88dk+sdcc, the fastest of which is 5 mins 40 sec and 7500 bytes. That's four times faster than htc.
    [свернуть]


    * clisp (large program 1279 lines, lisp interpretter many longs) compiled for cpm

    z88dk+sdcc: 30155 bytes
    sdcc: missing library functions
    htc 7.50: 32186 bytes

    * startrek (large program 2153 lines, some float math) compiled for cpm

    z88dk+sdcc: 32053 bytes
    sdcc: missing library functions
    htc 7.50: 41038 bytes

    * eliza (352 lines, uses several stdio functions on input and output sides) compiled for cpm

    z88dk+sdcc: 8324 bytes
    sdcc: missing library functions
    htc 7.50: 15193 bytes

  8. #7

    Регистрация
    23.12.2006
    Адрес
    Славный город Самара
    Сообщений
    484
    Спасибо Благодарностей отдано 
    135
    Спасибо Благодарностей получено 
    16
    Поблагодарили
    12 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Sayman Посмотреть сообщение
    ассемблер отдельно взятых си компиляторов, к сожалению. только к ним и относятся и никакими другими не заменить.
    Не припоминаю чтобы к сдцц можно было бы прикрутить тот же sjasm для генерации z80 кода.
    Во-первых, функции для библиотек можешь писать на чём хочешь, главное, обеспечь их сборку в rel или lib.
    Во-вторых, с ключиком --asm= можно заставить SDCC генерировать ассемблерный текст для других ассемблеров - пожалуйста, можешь редактировать и компилить отдельно любимым асмом.

    Цитата Сообщение от Sayman Посмотреть сообщение
    справедливое замечание про решётку. Похоже, что асм от сдцц вообще десятичные числа не воспринимает, точнее воспринимает но, только с этой пресловутой решёточкой.
    Снова здорова! Да вы чем читате?! Даже если ты шестнадцатиричное число без неё наберёшь, асм это тоже не поёмет. Решётка - обозначение непосредственной адресации. Для Z80 такой синтаксис, конечно, избыточен, это издержки унификации.
    Цитата Сообщение от Sayman Посмотреть сообщение
    сдцц, как и z88dk, базируется на древнем цпм компиляторе small-c. Только вот z88dk по части асма более близок к пользователю, а в sdcc всё сильно извратили.
    Как говорится, одни ищут возможности, другие - причины. Если уж так решётки не нравятся - что, нельзя скриптик написать для их "выкусывания"?
    ТАКАЯ БОЛЬШАЯ проблема! Самому-то не смешно?
    Лично, я, вообще, никаких проблем с переходом на этот синтаксис не заметил - даже мысли не возникло претензии по этому поводу предъявлять.

    Цитата Сообщение от Sayman Посмотреть сообщение
    К слову говоря о бесплатности и "лучшести" - не совсем близкие значения.
    Боюсь, ты будешь шокирован, но эти значения ещё дальше друг от друга, чем тёплое и мягкое.

    Цитата Сообщение от Sayman Посмотреть сообщение
    Может для всяких pic`ов и подобных он и лучший, но для z80 не фонтан, откровенно говоря. Даже твои тесты показывают, что sdcc уступает древнему и бесплатному htc (кстати, ты табличку так и не подправил).
    Таблички все поправлены. Лучше SDCC код дали только HTC 7.50 и z88dk, использующий пропатченый (ВНЕЗАПНО) sdcc. Что касается htc то, боюсь, если ты решётку в sdcc не осилил, то танцы с бубном в компании DosBOX, htc7.50, cp/m эмулятора и htc3.09, чтобы собрать файл для спека, и подавно.
    HTC7.50 можно использовать в случае, если не жалко усилий ради конечного результата.

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

    Цитата Сообщение от Smalovsky Посмотреть сообщение
    Как, кстати, получить доступ к локальным переменным функции в SDCC со стороны ассемблера ?
    Если функция написана тобой на ассемблере и, стало быть, ты точно знаешь смещение переменных относительно начала подпрограммы, то
    можно взять указатель на эту функцию и прибавить к нему смещение переменной.

    Если тебе это понадобилось, значит, 99,99% ты что-то делаешь не правильно. Если эта переменная требуется где-то ещё, объяви её ГЛОБАЛЬНОЙ.
    Последний раз редактировалось Sergey; 11.03.2016 в 23:28.
    С уважением,
    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

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

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

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

Ваши права

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