Tengo dos macros, una está escrita en ensamblaje y la otra en C. La segunda macro usa la primera macro. Sin embargo, también quiero escribir la segunda macro en ensamblaje con volátil, para poder controlar su ubicación en el código. Y tenga en cuenta que tid es un valor de tiempo de ejecución, no una constante como n.Cómo escribo todo esto en el ensamblado
¿Cuál es una buena manera de escribir eso en el montaje? Además, ¿es posible controlar la colocación de un código C como ensamblado con volátiles?
#define SAVE_SP(n) __asm__ __volatile__ ("movq %rsp, msp"#n";" \
"movq ts"#n", %rsp;" \
)
#define SAVE_STACK_POINTER(tid) \
switch(tid) \
{ \
case 0: \
SAVE_SP(0); \
break; \
case 1: \
SAVE_SP(1); \
break; \
case 2: \
SAVE_SP(2); \
break; \
case 3: \
SAVE_SP(3); \
break; \
}
tid es un valor de tiempo de ejecución, no una constante como n. – MetallicPriest
(No importa, eso no tenía sentido) –
¿Es posible almacenar los valores 'tsp' y 'msp ' en una matriz? –