linux 定时器 睡眠,nasm汇编linux计时器或睡眠

有一个睡眠程序的系统调用,sys_nanosleep:

sys_nanosleep : eax = 162, ebx = struct timespec *, ecx = struct timespec *

这个struct timespec结构有两个成员:

tv_sec ; 32 bit seconds

tv_nsec ; 32 bit nanoseconds

这个结构可以在nasm中声明为:

section .data

timeval:

tv_sec dd 0

tv_usec dd 0

然后设置值并将其命名为:

mov dword [tv_sec], 5

mov dword [tv_usec], 0

mov eax, 162

mov ebx, timeval

mov ecx, 0

int 0x80

程序然后会睡5秒钟.一个完整的例子:

global _start

section .text

_start:

; print "Sleep"

mov eax, 4

mov ebx, 1

mov ecx, bmessage

mov edx, bmessagel

int 0x80

; Sleep for 5 seconds and 0 nanoseconds

mov dword [tv_sec], 5

mov dword [tv_usec], 0

mov eax, 162

mov ebx, timeval

mov ecx, 0

int 0x80

; print "Continue"

mov eax, 4

mov ebx, 1

mov ecx, emessage

mov edx, emessagel

int 0x80

; exit

mov eax, 1

mov ebx, 0

int 0x80

section .data

timeval:

tv_sec dd 0

tv_usec dd 0

bmessage db "Sleep", 10, 0

bmessagel equ $- bmessage

emessage db "Continue", 10, 0

emessagel equ $- emessage

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值