Я написал фрагмент кода на C и разобрал его, а также прочитал регистры, чтобы понять, как программа работает в ассемблере.
int test(char *this){
char sum_buf[6];
strncpy(sum_buf,this,32);
return 0;
}
Часть моего кода, которую я изучал, является тестовой функцией. Когда я разбираю вывод своей тестовой функции, я получаю...
0x00000000004005c0 <+12>: mov %fs:0x28,%rax
=> 0x00000000004005c9 <+21>: mov %rax,-0x8(%rbp)
... stuff ..
0x00000000004005f0 <+60>: xor %fs:0x28,%rdx
0x00000000004005f9 <+69>: je 0x400600 <test+76>
0x00000000004005fb <+71>: callq 0x4004a0 <[email protected]>
0x0000000000400600 <+76>: leaveq
0x0000000000400601 <+77>: retq
Я хотел бы знать, что действительно делает mov %fs:0x28,%rax
?