2
我想知道如何僅使用c來獲取eflags註冊內容,而沒有任何_asm插入。可能嗎?如何僅使用c獲取eflags
我想知道如何僅使用c來獲取eflags註冊內容,而沒有任何_asm插入。可能嗎?如何僅使用c獲取eflags
不,在沒有_asm的標準C中是不可能的,除非你有一個C編譯器,它有一些編譯器特定的方法來完成它。
沒辦法。但是你可以用一個很好的宏來欺騙你自己。我現在不能測試這個,但是沿着這條線:
#define GET_FLAGS(X) asm volatile ("pushfl;\
popl %%eax; \
movl %%eax, %0;" \
:"=m" (X) \
);
uint32_t getFlags() {
uint32_t flags;
GET_FLAGS(flags);
return flags;
}
當然,它是高度依賴於體系結構的。這裏的可移植性非常低。
根據你的編譯器的不同,你可能有一個頭文件,它有一些特殊的功能來訪問CPU特有的功能。 –
2010-10-16 16:25:33