Chinaunix首页 | 论坛 | 博客
  • 博客访问: 719687
  • 博文数量: 107
  • 博客积分: 5079
  • 博客等级: 大校
  • 技术积分: 1330
  • 用 户 组: 普通用户
  • 注册时间: 2006-02-10 10:58
文章分类

全部博文(107)

文章存档

2017年(1)

2015年(8)

2014年(8)

2012年(2)

2011年(7)

2010年(8)

2009年(20)

2008年(53)

分类: LINUX

2011-08-31 16:33:55

Linux下可执行文件格式为ELF32和ELF64两种

想使用nasm(yasm)生成ELF格式的文件,一步是办不到的,需要使用连接器,具体如下

 yasm -f elf chenqs.asm  或者 yasm -f elf64  chenqs.asm  

生成chenqs.o文件

gcc -o chenqs chenqs.o

生成的chenqs文件就是我们的程序

我们可以用Linux下的16进制编辑器来查看他的内容

Linux下16进制编辑器可用vim,使用%!xxd切换到这个模式
看见开头的.ELF就说明你已经成功了

bash-4.1$ cat t.cpp 
#include
#include
#include

unsigned char read_pci_config_8(unsigned char bus, unsigned char slot, unsigned char func, unsigned char offset)
{
        unsigned char v;
        outl(0x80000000 | (bus<<16) | (slot<<11) | (func<<8) | offset, 0xcf8);
        v = inb(0xcfc + (offset&3));
        return v;
}

void write_pci_config_8(unsigned char bus,unsigned char slot, unsigned char func, unsigned char offset, unsigned char val)
{
        outl(0x80000000 | (bus<<16) | (slot<<11) | (func<<8) | offset, 0xcf8);
        outb(val, 0xcfc + (offset&3));
}

int main(void)
{
        iopl(3);

        printf("%x\n", read_pci_config_8(00,01,01,0xf0));

        return 0;
}
bash-4.1$
阅读(2227) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2011-09-02 16:32:29

yejin