Я пытаюсь использовать регистр% gs для сохранения временного значения в моей программе.Я использую проход LLVM для вставки ассемблерного кода, который записывает и читает регистры.Когда я использую% fs, все работает.Но% fs используется несколькими программами / библиотеками, а% gs - нет.Когда я заменяю% fs на% gs, даже простые инструкции, такие как mov% eax,% gs: 0x0 терпят неудачу.
mov% rbx,% fs: 0x0 // Работает
mov% rbx,% gs: 0x0 // Ошибка сегментации.
(С другой стороны, mov% rbx,% gs - работает, пока значение в% eax меньше 4. Любое значение больше 4, вызывает ошибку сегментации)
Как можноЯ создаю сегмент и использую его селектор сегмента в% gs, который я могу использовать в дальнейшем в программе.
Описание машины: 64-битная Ubuntu 16.04.LLVM-7.0.1