Hi,
ehrlich gesagt weiß ich garnicht was du sagen willst mir deinem Post
Also, ich hab Syscalls früher so gemacht.
Erstmal eine Funktion die einen Interrupt aufruft:
_DoSyscall:
pop edx
pop ecx
pop ebx
pop eax
int 0x80
ret
Und in C sieht das jetzt so aus...
#define uint unsigned int
extern uint DoSyscall(uint eax,uint ebx,uint ecx,uint edx);
int write(int filenum,void *buffer,uint count)
{
return DoSyscall(0,filenum,buffer,count);
}
Jetzt brauchen wir noch einen Interrupt Handler für int 0x80...
[Extern _sys_write]
[Extern _sys_read]
Syscall:
cmp eax,0
je .write
cmp eax,1
je .read
mov eax,-1
jmp .end
.write:
push ebx ;filnum
push ecx ;buffer
push edx ;count
call _sys_write
jmp .end
.read:
push ebx ;filnum
push ecx ;buffer
push edx ;count
call _sys_read
jmp .end
.end:
iret
Und in unserem Kernel haben wir jetzt die funktionen sys_write und sys_read.
Wow, könnte schon fast ein Tutorial sein
Btw, es können Fehler auftregen, hab das grad so ausm Kopf geschrieben.
MfG GhostCoder