ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
23 ноября
15524
Eliseev (12.10.2004 18:44, просмотров: 889)
вопрос по ассемблеру у меня перед запуском сишного main'а есть небольшая инициализация на ассемблере. чтобы перейти на main в этом ассемблерном файле стоит инструкция b main так вот. если я линкеру указываю, чтобы функцию main засунул в тот же сегмент что и инициализационный ассемблерный код, то всё линкуется замечательно. а если пытаюсь записывать main в область SDRAM, то линкер ругается Error[e18]: Range error, Where $ = initialization_start + 0x5C [0x1000015C] in module "init" (D:\Work\Projects\IAR_loader\Debug\Obj\s3c44b0x_init.r79), offset 0x5C in segment part 1, segment ICODE What: 0xEB000000 | main - ($ + 8) >> 2 & 0xFFFFFF [0xFBFFFE9C] Allowed range: 0xFDFFFFFC - 0x2000000 в xlink.pdf написано, что это из-за того что переход слишком длинный. И там совет даётся сделать переход как-нить по-другому. Подскажите, плиз, как можно в другой сегмент перейти, чтобы линкер не ругался. SDRAM у меня внешняя, с адреса 0XC000000, а инициализационный код во внутренней памяти проца. Это начиная с адреса 0x10000000, т.е. ссылка ведёт как бы назад.