ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
22 ноября
181668 Топик полностью
fk0, легенда (15.02.2010 11:32, просмотров: 171) ответил Alex R на интересно рассказываете, а откуда берутся такие знания? а еще есть? :) всмысле по известным проблемам hitech-c.
Знания берутся из практики вида "не работает" и долгих разбирательств. Если версия STD (про PRO не скажу) -- видимо надо. Чтоб не обёртывать di() ei() достаточно TBLPTRU=0 на входе в обработчике (ну и восстанавливать после использования. Проблема в том, что кодогенератор забивает на TBLPTRU если --cp=16. Ещё знания:
Компиляторы Hitech-C им Hi-Soft software

Актуальная версия: 9.51pl2. Это последняя адекватная (собирает проект) версия. Версии "PRO" помимо прочих проблем, связанных с конфликтом библиотечных функций с проектом (из-за их оптимизации), попросту не могут собрать код ввиду "ошибок": "can't generate code for this expression".
Известные ошибки 9.51pl2

В компиляторе обнаружены следующие ошибки:

1. Забывает загружать BSR новым значением. Ошибка встречалась и в ранних версиях компилятора. Возникает, когда имеются static переменные в теле функции. Сложно точно сказать, похоже проблема касается только struct и union, возможно массивов. Переменные типа static заводить ввиду чего лучше в пределах модуля, а не функции. Кроме того, просматривать, после компиляции, листинги -- что компилятор положил в bigbss секцию -- туда не должны попадать static переменные кроме типа char или если они физически не вмещаются в bss.

2. Некорректная работа с far-указателями на массив: http://forum.htsof …/an/0/page/0#Post87082 -- в качестве обходной меры все массивы можно заворачивать в структуры.

3. Некорректная генерация кода для сравнения знаковых целых чисел в диапазоне -32768...(-32768+256).

4. Некорректная работа с const struct указателями при использовании битовых полей: http://caxapa.ru/151994.html?hilite=fk0

5. Множественные проблемы при --cp=24, в частности: http://caxapa.ru/142403.html -- проблемы с NULL.

6. Может не туда класть константы (адреса), область для констант необходимо контролировать и задавать при необходимости вручную (-L-pconst=lowcode+1000h).

7. С near может генерироваться некорректный код, подробностей неизвестно.
[ZX]