当前位置: 技术问答>linux和unix
一个关于系统调用的问题??
来源: 互联网 发布时间:2016-08-17
本文导语: call *sys_call_table(0,%eax,4) 是什么意思??? | 比如系统调用号为1 则eax为1 那么就是call sys_exit() | 调用相应的系统调用 ENTRY(sys_call_table) .long sys_restart_syscall /* 0 - old "setup(...
call *sys_call_table(0,%eax,4)
是什么意思???
是什么意思???
|
比如系统调用号为1 则eax为1
那么就是call sys_exit()
那么就是call sys_exit()
|
调用相应的系统调用
sys_call_table+%eax*4+0 这个定位到相应的函数
ENTRY(sys_call_table)
.long sys_restart_syscall /* 0 - old "setup()" system call, used for restarting */
.long sys_exit
.long ptregs_fork
.long sys_read
.long sys_write
.long sys_open /* 5 */
............
sys_call_table+%eax*4+0 这个定位到相应的函数
|
因为上面并不是我们常见的数组
sys_call_table只是一个定位标志
#define ENTRY(name)
.align 32;
.proc name;
name:
.long xx 这每一个占用4byte所以要*4
|
系统调用表 里面存放的是函数的指针
通过%eax传递系统调用号,每个指针长度是4字节
通过%eax传递系统调用号,每个指针长度是4字节