Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Ошибка в программировании...
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
ASergej_R19
Пишу программу под ARM (LPC2292). Пишу основную часть на Си и часть функций идет на асме.
Проблема вот в чем:
в С-коде объявляю переменную "int Flag;", а потом в асме, пытаюсь что-нибудь загрузить из этой переменной. "EXTERN Flag", а потом внутри асм-кода "LDR R4, Flag". В результате линковщик выдает ошибку:

Error[e18]: Range error, Expression out of range
Where $ = Function + 0xC [0x80DC]
in module "AsmCodes" (C:\AsmCode.r79),
offset 0xC in segment part 0, segment CODE
What: Flag - ($ + 8) [0xF7FE4]
Allowed range: 0xFFFFF001 - 0x1000
Operand: Flag [0x1000c8]
in module TestARM (C:\TestARM.r79),
Offset 0x0 in segment part 7, segment DATA_Z

Где TestARM - файл с C-кодом, где объявлена переменная Flag. AsmCode - файл с асм-кодом, где я пытаюсь что-нибудь считать из переменной Flag.

Объясните пожаласт - что это такое? Как правильно выкручиваться из таких ситуаций?

P.S. пишу на IAR...
aaarrr
Правильно "выкрутится" так:
Код
    EXTERN Flag

    ldr    r4, =Flag  ; Адрес переменной Flag
    ldr    r4, [r4]   ; Чтение переменной
ASergej_R19
Цитата(aaarrr @ Mar 22 2008, 17:53) *
Правильно "выкрутится" так:
Код
    EXTERN Flag

    ldr    r4, =Flag ; Адрес переменной Flag
    ldr    r4, [r4]  ; Чтение переменной


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