Linux下yasm生成ELF

2357阅读 1评论2011-08-31 wheel
分类:LINUX

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$
上一篇:Linux下的三种时钟:RTC/PIT/TSC的区别
下一篇:DVI DDC通信

文章评论