趣味Demo:不用main函数,输出"Hello World!"

本文介绍了如何在Linux环境下不通过main函数,而是利用其他方法输出'Hello World!'。最初认为可能使用echo或cat命令,但最终解决方案涉及到汇编语言。更新中提到了一个更简单的代码实现,并推荐了相关文章链接供读者参考。
摘要由CSDN通过智能技术生成

今天同学给我出了一道题,基于Linux,如何实现在不用main函数的情况,输出"Hello World!" ,我百思不得其解,本以为可以用echo命令回,或者cat文件,但是好像思路都不太对,后来他告诉我用汇编语言……简直崩溃,看完之后,感觉单片机的汇编语言和这个简直没法比呀……下面是代码实现;

// vi 创建  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");
}//asm (assembly language 的简称),即:汇编语言。asm是一个符号连接

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 
 

//2019/8/10 Update:

这个问题我有查了一下,发现有更为简单一点的解法,代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值