gcc вполне способен генерировать эти инструкции, поэтому вы можете сделать:
void** p = 0x10000;
register void* sp asm("sp") = *p;
__asm__ __volatile__("" : : "r" (sp) : "memory");
Обратите внимание, что связываться с sp
опасно, поэтому убедитесь, что вы знаете, что делаете.
Для загрузки pc
вам действительно потребуется использовать mov
, например:
void** p = 0x10000;
__asm__ __volatile__("mov pc, %0" : : "r" (*p) : "memory");
__builtin_unreachable();