ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Вторник
26 ноября
64550 Топик полностью
POV (04.08.2006 13:41, просмотров: 1) ответил ++ на Ничего не понял. Компилятор С компилирует код в промежуточный .ASM так, что сегменты данных > 64K при задании след моделей памяти: compact, large huge.
Вот результаты моей сегодняшей работы... расплагаю массивы произвольной длины в far - если один из массивов хочет расположиться на двух страницах по 64 к, то ошибка. Т.е. "слить" все массивы в один не получается - приходится объявлять в каждой странице по несколько массивов так, чтобы они целиком в странице помещались. От этой гадости сильно изменились процедуры накопления, извелечения ипередачи в комп накопленных данных, т.к. приходится отслеживать номер массива switch ((BYTE)(index/arraysize)) { case 0: array1[index%arraysize]=value; break; ... case 8: array1[index%arraysize]=value; break; } Для передачи же данных к комп вообще пришлось отказаться от мвоей библиотеки работы с УАРТ и ввести новую функцию с почти аналогичным switch, а также через extern указать на эти массивы и сопуствующие переменые :(( И еще одна гадость: в зависимости от размера массивов (даже когда они целиком в странице помещаются) может возникнуть ситуевина, что какой-либо очередной массив при чётком объявлении через _at_ своего адреса может иметь адрес на 64к меньше! Принудительно указал таким массивам адреса на 0x10000 больше. Но как-то стремно это.