Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Комбинированный проект ASM + C++
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
BSACPLD
Пытаюсь собрать комбинированный проект ASM + C++.
Есть массив в ассемблерном коде объявленный следующим образом:
Код
PUBLIC rx_buf

ASEG DATA
    ORG 0x0060
rx_buf:    DS8 1520

В C++ коде он объявлен как extern "C" unsigned char rx_buf[1520] ;.

Есть также массив данных объявленный в С++ коде:
CODE

char test[10] ;
test[0] = 0x01 ;
test[1] = 0x02 ;
test[2] = 0x03 ;
test[3] = 0x04 ;
test[4] = 0x05 ;
test[5] = 0x06 ;
test[6] = 0x07 ;
test[7] = 0x08 ;
test[8] = 0x09 ;
test[9] = 0x0A ;


При сборке проекта IAR размещает массив test по адресу 0x0060, т.е. получается, что один массив данных налезает на другой.

Как сделать так, чтобы массивы не перекрывались?
Палыч
Сменить абсолютный сегмент на relocatable
BSACPLD
А как это правильно сделать?
Если написать:
Код
RSEG DATA

rx_buf:        DS8 1520

то линкер выдаёт ошибку:
Fatal Error[e72]: Segment DATA must be defined in a segment definition option (-Z, -b or -P)
sergeeff
Вы свой rx_buff объявите в С++ модуле, а в ASM модуле объявите его как EXTERN.
BSACPLD
Всем спасибо за помощь.
Сделал следующим образом.
Код
PUBLIC rx_buf

RSEG NEAR_N

rx_buf:    DS8 1520
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.