首页 > kernel 中 x86 架构中 thread_info 是如何获取的?

kernel 中 x86 架构中 thread_info 是如何获取的?

书上有两行代码

movl $-8192, $eax
andl $esp,$eax

current在x86上是用最低位13位作掩码找到到8KB的底部,获得thread_info的位置.
但是-8192的二进制不是10,0000,0000,0000么?按道理说掩码应该是1,1111,1111,1111不是么?我一直以为是我补码算不对,不过确定又确定还是得不出13个1,这里到底应该如何理解?


#include <stdio.h>
int main()
{
        int a=-8192;
        printf("%x",a);
}

这段代码在64位上是fffe000,说明高位的都是1,这里理解反了,应该是1111,...,1110,0000,0000,0000这样的掩码.

【热门文章】
【热门文章】