Пишу программу под 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...
|