MicroCHIP.RU
Главная Документация Отладочные средства Справочник Поиск Ссылки Цены
 Новости   Конференция   Как нас найти? 

Представляем новую линейку продуктов, поставляемых ООО "Микро-Чип":
Источники питания

Блоки  питания


 

Можно ли преодолеть ограничение в 65535 байт для размерности массива?

 Нoвaя темa  |  Наверх  |  Перейти к теме  |  Поиск  |  Правила  |  Вход 

ВНИМАНИЕ!
Вы просматриваете архив форума.

Этот форум работает только в режиме просмотра и поиска.

Действующий форум переведен на новый движок и
находится по адресу www.microchip.su

 Можно ли преодолеть ограничение в 65535 байт для размерности массива?
Автор: Виталий (195.209.230.---)
Дата:   21/12/2004 14:29

Пишем: far char b[65535];
Получаем: FAR data $020000 - $02FFFF $010000 ( 65536) bytes total FAR data

Пишем: far char b[65536];
Получаем: RAM data $0000FE - $0000FF $000002 ( 2) bytes total RAM
data

Можно ли преодолеть ограничение 2^16 на размерность массива? Бить длинный буфер на
несколько коротких не хочется...




 
 может и можно
Автор: Vova (195.131.84.---)
Дата:   21/12/2004 14:40

чего за контроллер (это контроллер?), чего за компилер?


 
 Re: может и можно
Автор: Виталий (195.209.230.---)
Дата:   21/12/2004 14:49

Контроллер PICC18F8720, компилятор HI-TECH PICC-18 8.35pl2.


 
 а может и нельзя ;)
Автор: Vova (195.131.84.---)
Дата:   21/12/2004 15:15

а чего ANSI говорит на счет индекса массива?

применить опцию -CP24, тогда все указатели станут 24-
битными, доступ к элементам массива через указатель.

(чтобы больше выделилось можно вместо char
влепить, например, int %)


 
 Re: а может и нельзя ;)
Автор: Виталий (195.209.230.---)
Дата:   21/12/2004 15:49

Значит, без указателей не обойтись...

А int вместо char не прокатывает:
Пишем: far int b[32767];
Получаем: FAR data $020000 - $02FFFD $00FFFE ( 65534) bytes total FAR data

Пишем: far int b[32768];
Получаем: RAM data $0000FE - $0000FF $000002 ( 2) bytes total RAM data


 
 Ишь чего захотели(+)
Автор: abivan (62.117.76.---)
Дата:   21/12/2004 16:24

для PC компилеров в 90-х годах сегмент ограничивался 0xffffffff, HUGE модель памяти специальная
с сенментом боле 0xffffffff была вместо LARGE(много сегментов ПП, много сегментов ПДанных). И
то с какими то ограничениями. Не помню уже. А Вы тут в пике... и как такое в голову то могло
прийти :-) , что такое возможно? :-)))

А два массива по 65000 создаются?


 
 Re: Ишь чего захотели(+)
Автор: Виталий (195.209.230.---)
Дата:   21/12/2004 16:34

В голову пришло, что я на Си пишу недавно. А на Пике тем более. :-)

А 2 массива создаются, даже 4 и больше, лишь бы памяти хватило:

far char a[65535];
far char b[65535];
far char c[65535];
far char d[65535];

Memory Usage Map:

Program ROM $000000 - $00000B $00000C ( 12) bytes
Program ROM $000018 - $000041 $00002A ( 42) bytes
$000036 ( 54) bytes total Program ROM

RAM data $0000FE - $0000FF $000002 ( 2) bytes total RAM data
FAR data $020000 - $05FFFB $03FFFC ( 262140) bytes total FAR data


Program statistics:

Total ROM used 54 bytes (0.0%)
Total RAM used 2 bytes (0.1%) Near RAM used 0 bytes (0.0%)


 
 Кстати, про указатели
Автор: Виталий (195.209.230.---)
Дата:   21/12/2004 22:04

Как PICC-18 обходится без new и delete? Т.е. как резервируется/освобождается память
по указателю на массив?


 
 про malloc ;)
Автор: Vova (195.131.84.---)
Дата:   21/12/2004 22:17

new и delete хе-хе ... это ж не ++ %)
да и malloc'а толком нет ... нет динамического выделения памяти - все
статическое. чем инициализировать указатель? хм ... чемнить ;) сам распредели свою внешнюю память
;)

http://www.microchip.ru/phorum/read.php?f=2&i=50932&t=50928&v=t
http://www.microchip.ru/phorum/read.php?f=2&i=70304&t=50928&v=t


действительно
нужно динамическое выделение памяти? пишем сами ....


 
 еще ссылка
Автор: Vova (195.131.84.---)
Дата:   21/12/2004 22:23

http://www.htsoft.com/forum/all/showflat.php/Cat/0/Number/10360/





Горячие темы на нашем форуме:
Отдел продаж: тел. (495) 223-2339 sales@microchip.ru   Skype:microchip-moscow
Rambler's Top100