2013-12-04 6 views
4

Согласно http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0056d/Cihcciij.html , если мой ARM код сборки необходимо получить доступ к глобальной переменной С именем globvar, я должен использовать import и load инструкции так:ARM доступ сборки к C глобальной переменной

AREA  globals,CODE,READONLY 
    EXPORT asmsubroutine 
    IMPORT globvar 
asmsubroutine 
    LDR r1, =globvar ; read address of globvar into 
         ; r1 from literal pool 
    LDR r0, [r1] 
    ADD r0, r0, #2 
    STR r0, [r1] 
    MOV pc, lr 
    END 

, но когда Я использую его в своем коде, есть ошибка как "bad instruction import globvar '". Я использую компилятор armv7-android-gcc. Я также искал аналогичную проблему на этом форуме, но я не получил полезного результата, поэтому может кто-нибудь помочь мне в этом? Большое спасибо.

+0

Не используется ключевое слово 'extern'? –

+0

У вас на самом деле есть переменная с именем 'globvar'? Где оно живет? –

+0

Вам не нужна никакая директива «ИМПОРТ». Просто используйте имя глобального. BTW используемый вами синтаксис (до метки имени функции) не похож на правильный синтаксис ассемблера, который нужно передать в 'as'. –

ответ

1

Используйте EXTERN globvar вместо IMPORT globvar.

Смежные вопросы