2016-02-24 2 views
0

При запуске моего кода я получаю ошибку при неправильной инструкции. Ошибок компиляции нет, но даже когда я отлаживаю, это просто дает мне эту ошибку.Код ARM, выдающий незаконную инструкцию

Вот код, который я использую до сих пор:

.global .fopen 
.global .fclose 
.global getc 

.data 
    fin: .word 0x00 
    r: .asciz "r" 
    format: .asciz "%d\n" 
.global main 
main: 
    PUSH {R1} 
    LDR R0, [R1, #0x04] 
    LDR R1, =r 
    BL fopen 
    LDR R1, =fin 
    STR R0, [R1] 
    POP {R1} 
endl: 
    LDR R1, =fin 
    LDR R0, [R1] 
    BL fclose 
_exit: 
    MOV R7, #1 
    MOV R0, #0 
    SWI 0 
+1

Возможно, вы находитесь в разумной системе, где разделы .data получают помеченные как no-execute ... – Notlikethat

+0

@ Не обращайте внимания, даже когда я удаляю .data, он не работает и дает ту же ошибку. Я использую Raspberry Pi – madcrazydrumma

+1

. Что подсказывает @Notlikethat, так это то, что вам нужно написать '.text' перед' main: ', чтобы указать ассемблеру/компоновщику/загрузчику, что следующее должно интерпретироваться как исполняемый код. – EOF

ответ

0

С кредита @EOF и @Notlikethat:

... Вам нужно написать .text перед главным :, чтобы указать ассемблеру/компоновщику/загрузчику, что следующее должно интерпретироваться как исполняемый код. - @EOF

Спасибо большое, ребята!