¿Por qué no puedo compilar este código de ensamblaje?

2

Al ensamblar el código, aparece el error: fpu.s (13): error: A1240E: No se puede utilizar el valor inmediato con esta operación

AREA PGRM, CODE, READONLY
ENTRY
EXPORT __main
__main
    LDR R0,=0XE000ED88
    LDR R1,[R0]
    ORR R1,R1,#(0xF << 20)
    STR R1,[R0]
    dsb



    VMOV.F32 S7, #0x419c0000
    VMOV.F32 S8, #0X41B40000
    VADD.F32 S9,S7,S8

LOOP    B LOOP
    END
    
pregunta Nirmal Anand

1 respuesta

2

En VMOV, el formato F32 espera el siguiente argumento como valor inmediato:

  

Cualquier número que se pueda expresar como \ $ \ pm n \ veces 2 ^ {- r} \ $, donde n y r son   enteros, 16 < = n < = 31, 0 < = r < = 7.

Tienes los siguientes valores inmediatos:

$$ \ text {0x} 419C0000 = 4199 \ times2 ^ {18} \\ n = 4199 \ quad r = -18 $$ y $$ \ text {0x} 41B40000 = 4205 \ times2 ^ {18} \\ n = 4205 \ quad r = -18 $$

En ambas instrucciones, los valores inmediatos están claramente fuera del rango esperado. Debe escalar estos parámetros de antemano.

    
respondido por el Vicente Cunha

Lea otras preguntas en las etiquetas