一、为了得到中断描述符的信息 我这样写
- C/C++ code
unsigned char idtr[6] = {0};asm ( 37 "sidt %0" 39 :"=m"(idtr) 41 );
打印出来的结果是 idt base 0xff21bc60 limit 0x7ff
请高手分析一下结果是对的还是错的?
二、然后为了得到系统调用,即80号中断的中断描述符的信息
- C/C++ code
struct idt 16 { 17 unsigned short offset_low; 18 unsigned short sel; 19 unsigned char none,flags; 20 unsigned short offset_high; 21 }__attribute__ ((packed));struct idt idt;idt = (struct idt *)(*(unsigned int *)&idtr[2] + 8 * 0x80);
得到了80号中断的中断描述符信息,我打印idt的信息,就出错了,直接crash了
貌似idt的信息是错的 但是我不知道这样做哪儿错了?
请高手指点一下
------解决方案--------------------------------------------------------
------解决方案--------------------------------------------------------
你以为linux的中断描述表那么好弄的?