О! Щикарно! SDCC прям настолько открыт и его разрабы прям отзывчивы-отзывчивы и прям так доступны, что даже вот прям на любое msg отвечают и бегут править все-все баги. ага. удачки. на тот случай если ты не в курсе - автору sdcc давно плевать на компиляцию кода для z80. более того, новые версии - новые баги.
лолшто? уважаемый, у вас проблемы с матчастью. не знаешь даже как стек работает. предлагаешь людям два раза делать инкремент стека - один раз компилятор в момент засовывания аргументов на стек и второй раз когда снимать нужно.от sayman хотел выставить идиотами меня и разработчиков SDCC и z88dk, а выставил клиническим дураком себя.
в эти стандарты __z88dk__чего-тотам не входит и никогда не входило. при этом htc как я помню может использовать регистры a, hl и iy когда переменная register.Кроме того, есть стандарты на модель вызова.
Давай конкретнее, какие баги в оптимизаторе? или ты не видишь разницы между asm файлом до и после оптимизатора?глючной оптимизатор, который использовать нельзя вообще.
Если говорить конкретно про баги sdcc, то вот мой список, который твои любимые афтары sdcc игнорят годами и исправлять не желают:
1. конструкция if(!(val = func1())) func2(); при которой val получает отрицательное число - не работает, т.к. компилятор упорно делает проверку через or a, т.е. на 0, не понимая, что результат может быть отрицательным. при этом с хайтех всё ОК.
2. sdcc не умеет работать с массивами вида char val[]; длинна которых явно не указана, но инициализируется позже. Примером является игра robo от hippiman`а. Эта игра собирается на старом sdcc 2.9.0, где такой проблемы нет. На всех версиях позже игра не работает, хотя и собирается 10 минут. в хайтехе с этим проблем нет!
3. в версии 3.7.0 сломали цикл while().
дальше даже продолжать нет желания. да, нет сомнений, sdcc полезный инструмент, местами и временами. он работает нативно под вендами, что очень удобно. и у хайтеха тоже есть не очень хорошие моменты меня бесящие (типа сколько-то байт мусора в конце файла). но, как уже сказали ранее, ты и 5 минут с ним не работал.
Остальное без комментариев))).
(__stdcall или в z88dk __z88dk_callee)вот это вообще рукалицо. разрабы видимо вообще не знают стандартов языка и на ходу придумывают свои. __cdecl и __stdcall для sdcc как китайская грамота. но зато решили исковеркать и всё обозвать по своему. ништяг чё. и кстати, это не модель вызова, а соглашение вызова. чтобы более точнее понимать что это такое, вот:(__cdecl или в z88dk обычная, по умолчанию)
раз
два





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