[an error occurred while processing this directive]
|
Ваши инициализационные данные надо же где-то хранить. Наверняка же run-time autoinit используется. Они, данные инициализационные то есть, в .cinit лежат. При запуске программы вначале стартап C-шный работает, который, кроме прочего, переписывает эти инициал. данные из .cinit в положенное им место, в array то есть. Это по .cinit. Увеличится его размер. Вы из-за инициализации под свой массив по сути 2 раза место выделили. Да еще и приличного размера массив.
Совет для подобных ситуаций. Т.е. когда массив почему-то не хочется инициализировать программно, написав что-то типа for(i=0....) array[i]=.
Создайте ассемблерный файл такого сорта:
.sect .array_section1
.global _array
_array:
.word 10
.word 21
.word 5
...
Не вручную, конечно набивать все это. PC-шную программу за полчаса набросать. Создаст она Вам этот файл. Прилинкуйте его к проекту.
По крайней мере .cinit не трогается.
А по .bss - возможно Ваша .array_section1 расположена там же, в смысле в том же блоке памяти, где и .bss. Кому-то места и не хватило. Или вообще памяти не хватило.
E-mail: info@telesys.ru