
Сообщение от
Barmaley_m
Вместе с тем отмечаю, что кодогенератор стал существенно лучше, чем был, и в некоторых моментах я был приятно удивлен результатами его работы. Почти как человек написал.
На Дураке выигрыш по размеру кода с версией SDCC 3.2.0 #8008 больше 600 байт! Сами понимаете, что это значит для Z80. Проблема же в том, что он перестал работать... Думаю, приоритетнее будет выловить баги, чем обфичивать. Повторюсь, я не встречал ни одной 100%-корректной по кодогенерации версии SDCC. Это проблема прямо.
Ещё у меня вопросик к гуру. Я конечно напишу его Филиппу, но позже. Может кто-то раньше ответит. Версия SDCC 3.2.0 в асмовых функциях не генерирует фрейма входа:
Код:
PUSH IX
LD IX,#0
ADD IX,SP
И, как я понимаю, это сделано для того, чтобы дать программеру больше свободы в принятии решения, каким способом лучше доставать параметры из стека. Что ж, дело хорошее. Но хотелось бы сохранить работоспособность кода и для старых версий SDCC. Поэтому на ум приходит что-то такое:
Код:
void myfunc (int p1, int p2, ...)
{
#if SDCC_VER > 3.1.x
__asm
PUSH IX
LD IX,#0
ADD IX,SP
__endasm;
#endif
...
}
Можете ли подсказать что должно быть вместо #if SDCC_VER > 3.1.x ?
Т.е. вопрос сводится к тому, с какой версии это дело началось, видимо.