Есть ярлык:
register long rsp asm ("rsp");
Демонстрация:
#include<stdio.h>
void foo(void)
{
register long rsp asm ("rsp");
printf("RSP: %lx\n", rsp);
}
int main()
{
register long rsp asm ("rsp");
printf("RSP: %lx\n", rsp);
foo();
return 0;
}
Дает:
$ gdb ./a.out
GNU gdb (Gentoo 7.2 p1) 7.2
...
Reading symbols from /home/user/tmp/a.out...done.
(gdb) break foo
Breakpoint 1 at 0x400538: file t.c, line 7.
(gdb) r
Starting program: /home/user/tmp/a.out
RSP: 7fffffffdb90
Breakpoint 1, foo () at t.c:7
7 printf("RSP: %lx\n", rsp);
(gdb) info registers
....
rsp 0x7fffffffdb80 0x7fffffffdb80
....
(gdb) n
RSP: 7fffffffdb80
8 }
Взят из Переменные в указанномРегистры Документация.