Я не уверен, что их называли сегмент зарегистрировать со времен старых сегментированных архитектур. Я считаю, что правильный термин - это селектор (но я могу ошибаться).
Тем не менее, я думаю, что вам просто нужно набрать первое четырехзначное слово (64 бита) в области fs
.
Бит %fs:0x0
означает содержимое памяти в fs:0
. Поскольку вы использовали общий add
(а не addl
, например), я думаю, что он будет принимать ширину данных от цели %rax
.
С точки зрения получения фактического значения это зависит от того, находитесь ли вы в унаследованном или длинном режиме.
В устаревшем режиме вам нужно получить значение fs
и найти его в GDT (или, возможно, LDT), чтобы получить базовый адрес.
В длинном режиме вам нужно будет посмотреть соответствующие регистры конкретной модели. Если вы на этом этапе, к сожалению, вы вышли за пределы моего уровня знаний.