41、深入理解系统调用:从 int 0x80 到 syscall

深入理解系统调用:从 int 0x80 到 syscall

1. C 运行时环境与函数命名

在 C 运行时环境中,程序的第一个函数通常需要命名为 main 。不过,如果你想编写一个不依赖任何 C 库例程、独立运行的程序,你可以自由选择函数名。但此时不能使用 gcc 来链接程序,而需要显式使用 ld ,并通过 -e 选项指定函数名。

例如,要汇编和链接一个特定程序,可使用以下命令:

$ as --gstabs -o helloWorld_int80.o helloWorld-int80.s 
$ ld -e myStart -o helloWorld-int80 helloWorld-int80.o
2. int 0x80 系统调用

在 Linux 中, int 0x80 是用于执行系统调用的软件中断。我们通过 eax 寄存器将 write 系统调用的编号传递给 int 0x80 处理程序。 write 系统调用的参数与调用 write C 包装函数时使用的参数相同,但需要将它们存储在指定的寄存器中。

调用 int 0x80 处理程序时,我们仅使用寄存器的 32 位部分。这一机制是为 32 位环境设计的,虽然在 64 位

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值