⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 syscall.s

📁 ucLinux is a very good embeded sytem. Most of company use this as their development OS.
💻 S
字号:
/* * June 27, 2001             Manuel Novoa III * * This is a heavily modified version of gcc's output for the _syscall5 macro. * The idea (originally from dietlibc) is that all syscall functions simply set * the syscall number as the first argument, then set the syscall arguments as * the next up-to-five arguments, and then jump here.  All the common work is * done by syscall(), saving a fair amount of generated code when a number of * syscalls are used.  The (potential) cost is some unnecessary pushes, pops, * and movs but the execution time penalty should be relatively small compared * to the cost of the syscall itself. * * July 24, 2002  * * Modified by Erik Andersen to take all function parameters from off the stack * like a proper function and eliminates the old 255 syscall number limit.  So * now we can just call this as a function as syscall() per the function * prototype in unistd.h, so to call _exit(42) you can just call. *         syscall(__NR_exit, 42); * and things will just work. */.text.global syscall.type   syscall,%function.align 4syscall:	pushl %ebp	pushl %edi	pushl %esi	pushl %ebx	movl  44(%esp),%ebp	/* Load the 6 syscall argument registers */	movl  40(%esp),%edi	movl  36(%esp),%esi	movl  32(%esp),%edx	movl  28(%esp),%ecx	movl  24(%esp),%ebx	movl  20(%esp),%eax	/* Load syscall number into %eax.  */	int $0x80	popl %ebx	popl %esi	popl %edi	popl %ebp	cmpl $-4095,%eax	jae  __syscall_error	ret			/* Return to caller.  */.size syscall,.-syscall

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -