linux syscall时间,32位Linux上的Syscall或sysenter?

从MS-DOS开始,我知道使用中断的系统调用.在旧文章中,我看到引用int 80h来调用

Linux上的系统函数.由于现在相当长的一段时间,我知道int 80h已被弃用而不支持syscall指令.但我不能让它在我的32位机器上工作.

这个问题

syscall指令只能在64位平台上使用吗? 32位Linux不使用系统调用吗?

样品测试

在我的32位Linux(Ubuntu Precise)上,该程序终止于核心转储:

global _start

_start:

mov eax, 4 ; 4 is write

mov ebx, 1 ; 1 is stdout

mov ecx, message ; address of string

mov edx, length ; number of bytes

syscall

mov eax, 1 ; 1 is exit

xor ebx, ebx ; return code 0

syscall

message:

db 10,"Hello, World",10,10

length equ $- message

我尝试使用sysenter而不是syscall,但它以同样的方式崩溃.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值