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




Ответить с цитированием