С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Легко. Просто пишешь: $асм-инструкция
Согласен. Никто ведь и не утверждал, что C-- это ЯВУ.Код:: void DEOLN() { DL = 0x0D; AH = 2; $int 21h DL = 0x0A; AH = 2; $int 21h }
На Спеке доступность ЯВУ это доступность Бейсика в ПЗУ. Можно на нём накорябать что-то. Серьёзный ЯВУ типа Си/SDCC или Оберон - недоступен из ПЗУ. А значит для его освоения нужны стимулы и понимание, зачем нужно именно это средство. У нас в сообществе в основном мнение такое, что нафиг надо, лучше асма ничего нет. И написать что-то серьёзное для Спека без знания асма невозможно даже на ЯВУ. Разве что будет действовать команда: кодер прикладного слоя, не знающий асма, и кодер-системщик, который будет ему подгонять реализацию процедур на асме. Хотя это тоже исключает разработку без знания асма. И я никогда не встречал такого работающего тандема.
Такие оптимизации вещь конечно хорошая, но всё равно приличный компилятор малыми силами не сделать. И не спорь.
Тогда С-- и ЯВУ - разные весовые категории. На Спеке ЯВУ для тех, кто не знает, не хочет знать Ассемблер или неохота/нет времени на нем писать. С-- им не поможет. Основные оптимизации в компиляторе не сложно и не долго делать разработчику компилятора без всяких больших коллективов.
- - - Добавлено - - -
На Асме кстати тоже быдлокод можно писать, рассказываю как, тут![]()
а чем С-- лучше Hitech C ?
Тоже давно хотел иметь компилятор C-- подобного языка для Z80.
После долгих колебаний начал делать свой велосипед для AVR. Цель была не в том, чтобы поддержать весь синтаксис С--, а только те конструкции, которые хорошо ложатся на систему команд. Т.е., хотелось, чтобы при взгляде на код было сразу более-менее понятно, в какие инструкции он будет скомпилирован. И, если какую-то конструкцию не получается скомпилировать в простой компактный код, то она не поддерживается. Сейчас есть поддержка функций с аргументами, условий и циклов. Ну и простая арифметика с регистрами.
Работает это штука как препроцессор кода, создавая на выходе ассемблерный файл.
Проект написана на яве, исходники на гитхабе: https://github.com/trol73/avr-asm-ext
Некоторое незаконченное (и уже устаревшее) описание попытался изобразить: http://trolsoft.ru/soft/avr-asm-ext (там в конце ссылки на пару примеров проектов на языке).
Проект сыроват, но уже вполне рабочий. Писать код стало ощутимо проще (чем на ассемблере), читать - тем более. Скорость выполнения и размер, при этом, ничем не уступают чистому ассемблеру. Качество кода (если он не совсем тривиален) местами получается ощутимо более высоким, чем у GCC, не смотря на все его оптимизации.
Надеюсь довести проект до ума и потом делать форк для Z80.
Это уже интересно.
Допустим, кто-то хочет написать для спека что-то более-менее серьёзное. Для этого надо выбрать язык программирования. Если выбрать ассемблер, то есть риск, что проект в какой-то момент станет слишком сложным и неуправляемым (т.е., затраты времени и сил станут неприемлимыми для любительского проекта, который just for fun). Если выбрать ЯВУ, то кодить будет намного проще, но есть опасение получить в итоге *****код, не позволяющий достичь нужной производительности и компактности.
С-- хорош тем, что можно начинать писать код на ЯВУ (вообще не зная ассемблера), в процессе заглядывая в генеримый ассемблерный листинг и оптимизируя код по мере изучения ассемблера и/или выявления существенных неоптимальных моментов. При этом будет сложнее закончить тем, что код невозможно поддерживать в силу его чрезмерной сложности или плохой оптимизации.
Я не вполне удовлетворён качеством машкода от SDCC, но лучше ведь ничего нету. Или писать на ЯВУ и мириться с таким кодом, или использовать что-то вроде Sphinx C--, который ещё для Z80 нужно адаптировать.
Добавлю ещё пару ссылок на сравнение Си-компайлеров:
https://www.z88dk.org/wiki/doku.php?...ont#benchmarks
http://www.cpcmania.com/Docs/Program..._and_speed.htm
Но мы отклоняемся от темы. Всё-таки оптимизация компилятором и оптимизация руками - это несколько разные вещи. Как и высокоуровневый и низкоуровневый код.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)