设为首页 加入收藏

TOP

C语言:编写访问PCI的小工具(四)
2013-11-20 14:17:57 来源: 作者: 【 】 浏览:731
Tags:语言 编写 访问 PCI 工具

 

  下面是我写的一段小程序事例,读取bus 0, device 0, function 0上面的所有64个寄存器的内容。

  [cpp]

  int main()

  {

  void iowrite(short int port1,unsigned long value);

  unsigned long int ioread(short int port);

  short int Config_Add=0xcf8;

  short int Config_Dat=0xcfc;

  int bus=0x00,dev=0x00,fun=0x00,reg=0x00;

  unsigned long dat;

  for(reg=0;reg<0x40;reg++){

  iowrite(Config_Add,(0x80000000 |(bus《16) |(dev《11) |(fun《8) |(reg《2)));

  dat=ioread(Config_Dat);

  printf("%8.8lx",dat);

  printf(" ");

  if((reg+1)%4==0){printf("\n");}

  }

  return 0;

  }

  unsigned long ioread(short int port)

  {

  unsigned long valueRet;

  asm mov dx, port;

  asm lea bx, valueRet;

  __emit__(

  0x66,0x50,

  0x66,0xED,

  0x66,0x89,0x07,

  0x66,0x58);

  return valueRet;

  }

  void iowrite(short int port1, unsigned long value)

  {

  asm mov dx, port1;

  asm lea bx, value;

  __emit__(

  0x66,0x50,

  0x66,0x8B,0x07,

  0x66,0xEF,

  0x66,0x58);

  return;

  }

  运行的结果和下图类似,我是在我的windows环境下运行的,所以数据内容肯定不对,大致的看一下就ok了。

      

首页 上一页 1 2 3 4 5 6 7 下一页 尾页 4/10/10
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C语言中sizeof()求字节数 下一篇c-常用的字符串转换函数

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: