|Page 1 of 1|
|Author:||tangruidon [ Sat Aug 11, 2012 2:24 am ]|
in linux ,it is
in visopsys it may be
lcall $0x003B,$0x00000000 and it will go to $0x003B,$0x00000000
and what is it in $0x003B,$0x00000000
|Author:||andymc [ Mon Aug 13, 2012 3:00 am ]|
|Post subject:||Re: syscall|
For Visopsys syscalls, we use something called a call gate. In kernelDescriptor.c, you can see that a call gate descriptor is set up to point to the function kernelApi() (in kernelApi.c). When a far call - lcall - is done to the call gate descriptor (in this case 0x3B, offset 0), it causes a privilege level switch into kernel mode code and jumps to the kernelApi() function. The kernel call proceeds from there, and then a far return gets you back to user mode.
0x3B in this case is a selector for the call gate descriptor, not a memory address, in case that wasn't clear.
|Page 1 of 1||All times are UTC|
|Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group