最近在拜读《程序员的自我修养-链接,装载与库》一书,书中给出了一个没有main函数的HelloWorld程序。代码如下(PS:强烈推荐此书!)
TinyHelloWorld.c
char* str = "Hello World!\n"; void print() { asm("movl $13,%%edx \n\t" "movl %0,%%ecx \n\t" "movl $0,%%ebx\n\t" "movl $4,%%eax \n\t" "int $0x80 \n\t" ::"r"(str):"edx","ecx","ebx"); } void exit() { asm("movl $42,%ebx \n\t" "movl $1,%eax \n\t" "int $0x80 \n\t" ); } void nomain() { print(); exit(); }
gcc -c -fno-builtin TinyHelloWorld.c
ld -static -e nomain -o TinyHelloWorld TinyHelloWorld.o
./TinyHelloWorld
详情参见《程序员的自我修养-链接,装载与库》4.6.2 page 124
原文:http://blog.csdn.net/junhuahouse/article/details/22269479