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) |