看linux内核源代码拼凑的一个读取cmos时间的小程序 出现段错误(吐核) 求解
#define outb(value,port) \__asm__ ("outb %%al,%%dx"::"a" (value),"d" (port)) //C语言内插汇编,采用AT&T语言 大致意思是 输入 eax=value edx=port 执行操作out
//无返回值
#define inb(port) ({ \
unsigned char _v; \
__asm__ volatile ("inb %%dx,%%al":"=a" (_v):"d" (port)); \ //输入 edx=port 语句执行返回结果放在 变量_v里 执行动作 in
_v; \
})
#define CMOS_READ(addr) ({ \
outb(0x80|addr,0x70); \
inb(0x71); \
})
void main()
{
int tm_sec;
//outb(0x80|0,0x70);
tm_sec=CMOS_READ(0); //往端口70写入0X80 后从端口71读取数据放入tm_sec 中 这个地方就段错误(吐了)
}
这个程序为吗不能在linux上跑呢 现在给的代码是copy的源程序代码呀
[此贴子已经被作者于2015-10-30 16:48编辑过]