I\'ve written a piece of C code and I\'ve disassembled it as well as read the registers to understand how the program works in assembly.
int test(char *this)
Looking at http://www.imada.sdu.dk/Courses/DM18/Litteratur/IntelnATT.htm, I think %fs:28 is actually an offset of 28 bytes from the address in %fs. So I think it's loading a full register size from location %fs + 28 into %rax.
%fs:28
%fs
%fs + 28