__asm__ __volatile__

__asm__ palabra clave asm es GCC definiciones de macro
utilizados para declarar una expresiones Inline Assembler

__volatile__ GCC es la volatilidad macro definición de palabra clave
# define volátil volátil
declaración a la GCC no permite la optimización del ensamblador en línea, o cuando se utiliza una opción de optimización (= O) compilado, GCC se basa en su propio juicio para decidir si la línea ensamblador instrucciones expresión optimizar la distancia.

formato de ensamblador en línea con la expresión de C / C ++ es:

asm  volátiles ( “Lista de instrucciones”: Salida: Entrada: Clobber / Modificar);
Aquí Insertar imagen Descripción
Aquí Insertar imagen Descripción
Aquí Insertar imagen Descripción
Aquí Insertar imagen Descripción

Aquí Insertar imagen Descripción

Cuando una pluralidad de instrucciones en la "Lista de instrucciones" cuando
se puede enumerar un par de comillas en todas las instrucciones,
sino también una o varias instrucciones pueden ser colocados en un par de comillas, más que todos los pedidos realizados entre comillas. Para separar de ellos o de nueva línea (/ n); debe ser un punto y coma ().

En la arquitectura ARM la operación de desactivación de interrupción

Tres instrucciones / n independiente.
Sólo dos registros de salida, no de entrada

memoria de cambio

int disable_interrupts (void) 
{ 
unsigned long old,temp; 
__asm__ __volatile__("mrs %0, cpsr/n" 
"orr %1, %0, #0x80/n" 
"msr cpsr_c, %1" 
: "=r" (old), "=r" (temp) 
: 
: "memory"); 
return (old & 0x80) == 0; 
}

Aquí Insertar imagen DescripciónAquí Insertar imagen Descripción
Ref
comando de consulta
https://blog.csdn.net/qq_35608277/article/details/105123483
la CPSR consulta
https://blog.csdn.net/qq_35608277/article/details/105107353

Ref
otra
https://blog.csdn.net/geekcome/article/details/6216436

Publicados 452 artículos originales · ganado elogios 271 · vistas 730 000 +

Supongo que te gusta

Origin blog.csdn.net/qq_35608277/article/details/105173853
Recomendado
Clasificación