Por alguna razón, cuando intento compilar este trozo de código, el compilador dice syscall.s:72:invalid constant (0x172) after fixup
:¿Constante inválida después de la corrección?
.globl _mach_msg_trap$MACH
_mach_msg_trap$MACH:
stmfd sp!, {r4,r7}
mov r7, #370 /* this is line 72 */
svc 0
ldmfd sp!, {r4, r7}
bx lr
No sé por qué lo está haciendo. Cuando pongo una constante más pequeña en r7
, funciona bien. Pero con números más altos, escupe este error. Lo he arreglado temporalmente haciendo mov r7, #300
y add r7, #70
, que logra el efecto deseado. Aún no estoy seguro de qué causó el error.
Tengo el mismo problema, pero usando armv4. Quiero cargar 0x0000ffff en un registro. movw y movt no son compatibles en este modo de brazo. Y tampoco puedo usar ldr r3, = # 0000ffff –
Tienes que cargar ldr r3, = # 0x0000ffff not = # 0000ffff. La reparación está desactivada por el ensamblador. También puede simplemente mov r3, # 255 - orr r3, r3, # 65280 –
No puedo poner ese valor en el registro. No es una dirección, es una constante que quiero almacenar en la memoria, en una posición dada por la variable v1 (en C la instrucción es: iowrite32 (v1, 0x0000FFFF). El mensaje es: No se puede manejar la solicitud de paginación del núcleo en la dirección virtual 0000ffff –