Calling syscalls through int 0x80 documentation?
Yuri
yuri at rawbw.com
Thu Oct 18 11:47:25 PDT 2007
> You can try here:
> http://www.ctyme.com/intr/int-80.htm
>
Thanks Derek.
This site just says: parameters on stack.
So when following this I write the function 'mysyscall' (below) it doesn't work.
It should return 3 but returns 14.
And I am on i386.
So something is missing.
Yuri
--- code----
#include <fcntl.h>
extern int mysyscall (
int syscall_no,
int a1, int a2, int a3,
int a4, int a5, int a6);
asm(
".text\n"
"mysyscall:\n"
" push 28(%esp)\n"
" push 24(%esp)\n"
" push 20(%esp)\n"
" push 16(%esp)\n"
" push 12(%esp)\n"
" push 8(%esp)\n"
" push 4(%esp)\n"
" int $0x80\n"
" pop %ecx\n"
" pop %ecx\n"
" pop %ecx\n"
" pop %ecx\n"
" pop %ecx\n"
" pop %ecx\n"
" pop %ecx\n"
" ret\n"
".previous\n"
);
main() {
char *fname = "myxxxfile";
//int fd = open(fname, O_WRONLY|O_CREAT);
int fd = mysyscall(5/*open*/, (int)fname,O_WRONLY|O_CREAT,0,0,0,0); // open
printf("fd=%i\n",fd);
}
More information about the freebsd-questions
mailing list