#include int main() { unsigned short gs; unsigned x; asm ("mov %%gs, %0\n" : "=g"(gs)); asm ("movl %%gs:0x30, %0\n" : "=r"(x)); printf("gs: %x\n", gs); printf("gs:0x30: %x\n", x); asm volatile ("mov %0, %%gs\n" : : "g"(gs)); asm volatile ("movl %%gs:0x30, %0\n" : "=r"(x)); printf("gs:0x30: %x\n", x); return 0; }