How to interpret segment register accesses on x86-64?-Collection of common programming errors
I’m not sure they’ve been called segment register since the bad old days of segmented architecture. I believe the proper term is a selector (but I could be wrong).
However, I think you just need at the first quadword (64 bits) in the fs area.
The %fs:0x0 bit means the contents of the memory at fs:0. Since you’ve used the generic add (rather than addl for example), I think it will take the data width from the target %rax.
In terms of getting the actual value, it depends on whether you’re in legacy or long mode.
In legacy mode, you’ll have to get the fs value and look it up in the GDT (or possibly LDT) in order to get the base address.
In long mode, you’ll need to look at the relevant model specific registers. If you’re at this point, you’ve moved beyond my level of expertise unfortunately.