es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Qué significa “A1114E: Se esperaba una expresión de registro relativa” en español?

Hola, estoy intentando llamar a una subrutina de ensamblador desde C y me sale este error. En la página web de Arm solo se menciona que existe este error.
Código en C:

#include <stdint.h>
extern void out_word(uint32_t out_address, uint32_t out_value);
extern uint32_t in_word(uint32_t in_address);

int main(void){
uint32_t value = in_word(0x60000200);
uint32_t address = 0x60000100;
out_word(address,value);
return (0);
}

Código en ensamblador:

                PRESERVE8
                AREA myCode, CODE, READONLY
                EXPORT in<em>word
                EXPORT out</em>word

in_word         PUSH {R1-R7}
                LDR R1, R0 ; línea que produce el problema
                LDR R0, [R1]
                POP {R1-R7}
                BX LR

out_word        STR R1, [R0]
                BX LR

            END
Tags:  , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error específico no fue proporcionado, pero suponiendo que está relacionado con la línea “LDR R1, R0” en la subrutina “in_word”, es probable que el problema esté relacionado con el modo de direccionamiento que se está utilizando.

    La instrucción “LDR” toma dos operandos, el primero es el registro en el que se cargará los datos (en este caso R1), y el segundo es la ubicación de memoria desde donde se cargará los datos (en este caso el contenido de R0).

    Sin embargo, el modo específico de direccionamiento utilizado con R0 puede estar causando el error. No está claro qué valor contiene R0 en tiempo de ejecución, pero si es una dirección que no está alineada en palabra, provocaría una excepción de aborto de datos al intentar cargar una palabra desde esa dirección.

    Para solucionar esto, asegúrese de que R0 contenga siempre una dirección alineada en palabra al llamar a la subrutina “in_word”.

Comments are closed.