2012-04-09 20 views
5

我試圖使用pt_regs結構來獲取和設置寄存器,如eax,但編譯錯誤告訴我,pt_regs沒有這樣的成員eaxpt_regs結構中的eax在哪裏?只有斧頭

但是,我能夠獲得ax註冊。有人可以告訴我發生了什麼事嗎?

我使用32位Ubuntu Linux與3.0.0內核。再次感謝你。

+0

XY問題:你是如何獲得和設置他們? – 2015-05-23 10:33:36

回答

4

看看struct pt_regs的定義arch/x86/include/asm/ptrace.h

注意#ifndef __KERNEL__這裏的東西,這意味着該結構的定義對於內核模式和用戶模式代碼是不同的。

對於內核代碼,pt_regs::ax可能是您需要的值。它應該包含在32位系統上的%eax和在64位上的%rax的值。

+0

感謝一羣人清理起來! – user490895 2012-04-11 21:48:36

+0

你最後的評論是正確的。見[head_64.S](http://elixir.free-electrons.com/linux/latest/source/arch/x86/kernel/head_64.S#L358)。當然,也有一個名字相似的32位版本。 – sherrellbc 2017-07-11 22:18:50