地址与地址的价值

时间:2014-08-13 19:50:10

标签: assembly kernel

我目前正在处理与引用%gs的某些内核模式代码相关的问题。这是正在发生的事情:

我有一个fairly large structure存储在%gs寄存器中。我试图从该结构中获取/设置cpu_active_thread值,该值恰好位于该结构内的偏移量0x8处。换句话说,我正试图获得/设置%gs:0x8。问题是,当我得到值时,结果是文字值0x8。 (由于这不是一个有效的地址,我稍后会崩溃。)我怎样才能改变这一点,以便我将{8}的值加到基于%gs的结构中?

如果您需要知道我是如何从结构中获取数据的,I am using these macros。谢谢!

编辑:我正在使用clang。上面的宏如下使用:

static inline thread_t
get_active_thread(void)
{
    CPU_DATA_GET(cpu_active_thread,thread_t)
}

0 个答案:

没有答案