在执行该指令之前,fs包含0x0。
另外我想知道我怎么能从GDB的这个内存区读取,这个命令是什么?
现代操作系统(如Linux和Windows)中的fs
和gs
寄存器指向特定于线程的操作系统和其他操作系统定义的结构。 修改段寄存器是一个受保护的指令,所以只有操作系统可以为你设置。
这个问题应该有助于解释在linux中amd64 fs / gs寄存器的具体含义。
fs
寄存器的实际值不是地址。 它是一个选择器 – GDT中的偏移量,它描述了哪个段可以/不能用于哪个段。 你不能看到隐藏的fs base和limit寄存器的值是什么 – 它们是内部的CPU寄存器,只有通过向fs写入一个新的“选择器”(在这一点上,从GDT更新基本/限制寄存器)才能更新。