Control Register(CR3)의 값을 읽을때, GAS fault ??
글쓴이: ukyoukyo / 작성시간: 수, 2009/11/11 - 4:53오후
x86 system에서 control register(CR3)를 읽으려고 합니다.
목적은 Page Directory의 시작위치를 읽기위해서요...
int main(void) { int cr3_value = 0; asm ( "movl %%cr3, %%eax\n\t" "movl %%eax, %0" : "=m"(cr3_value) : : "eax" ); printf("cr3_value == %X\n", cr3_value); return 0; }
위와 같이하면 컴파일(gcc)은 되는데,
실행하면 Seg' fault 발생합니다.
CR3를 커널레벨이 아닌 일반 응용프로그램 레벨에서 읽으려면 어떻게 해야하는가요?
Forums:
privilege level 제어 때문에 불가능합니다.
디바이스 드라이버를 하나 만들어서 Ring 0로 올린 뒤에 읽어야 됩니다.
응용 프로그램(Ring 3)에서는 OS가 막고 있기 때문에 안됩니다.
grassman님, 답변 감사합니다.
모듈을 만들어서 올리겠습니다...
------------------ System programmer...^^
------------------ System programmer...^^
댓글 달기