LINUX.ORG.RU

>5 arguments syscall


0

0

Как происходит вызов с 7, например, аргументами (mmap), ведь все их в регистры не запихнешь, да и макроса соответствующего нет?

anonymous

Да нет там ничего сложного:
linux/arch/i386/kernel/sys_i386.c
/*
* Perform the select(nd, in, out, ex, tv) and mmap() system
* calls. Linux/i386 didn't use to be able to handle more than
* 4 system call parameters, so these system calls used a memory
* block for parameter passing..
*/

vodz ★★★★★
()

Я как-то интересовался этой проблемой и выяснил, что
передача параметров <= 4 идет через BX,CX,DX,SI (AX-syscall nr)
a >= 5 через пользовательский stack. Указатель на
параметры передается в BX.

ovsov
()

Я как-то интересовался этой проблемой и выяснил, что
передача параметров "<= 4" идет через BX,CX,DX,SI (AX-syscall nr)
a ">= 5" через пользовательский stack. Указатель на
параметры передается в BX.

ovsov
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.