Ho due macro, una è scritta in assembly e l'altra in C. La seconda macro utilizza la prima macro. Tuttavia, voglio anche scrivere la seconda macro in assembly con volatile, così posso controllarne il posizionamento nel codice. E si noti che tid è un valore di runtime, non una costante come n.Come scrivere tutto questo in assembly
Qual è un buon modo per scriverlo in assembly? Inoltre, è possibile controllare il posizionamento di un codice C come assembly con volatile?
#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 è un valore di runtime, non una costante come n. – MetallicPriest
(Non importa, non ha senso.) –
È possibile memorizzare i valori 'tsp' e 'msp ' in un array? –