Как мне написать все это на ассемблере

У меня есть два макроса, один из которых написан на ассемблере, а другой на C. Второй макрос использует первый макрос. Однако я также хочу написать второй макрос на ассемблере с volatile, чтобы я мог контролировать его размещение в коде. И обратите внимание, что tid - это значение времени выполнения, а не константа, как n.

Какой хороший способ написать это на ассемблере? Также, возможно ли контролировать размещение кода на Си, как в ассемблере, с помощью 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; \
    }
8
задан MetallicPriest 25 November 2011 в 16:38
поделиться