- ;By Marcus Xing
- ;kernel/system_call.asm
- ;关于系统调用的代码,汇编写成
- ;-------------------------------------------------------------------------宏集合
- RESET_FUNCTION_NO equ 0 ;Reset系统调用的功能号
- WRITE_FUNCTION_NO equ 1 ;Write系统调用的功能号
- SEND_RECEIVE_FUNCTION_NO equ 2 ;SendReceive系统调用的功能号
- SYSTEM_CALL_INT_VECTOR equ 0x90 ;系统调用进入内核的中断向量号
- ;---------------------------------------------------------------------global集合
- global Reset
- global Write
- global Send_Receive
- [section .text]
- [bits 32]
- ;--------------------------------------------------------------------------Reset
- ;重启,不会返回了
- Reset:
- mov eax,RESET_FUNCTION_NO
- int SYSTEM_CALL_INT_VECTOR
- ;--------------------------------------------------------------------------Write
- ;把Printf解析好的字符串交给系统调用在调用的进程的控制台打印出来
- Write:
- mov eax,WRITE_FUNCTION_NO
- mov edx,[esp + 4] ;串地址->edx
- int SYSTEM_CALL_INT_VECTOR
- ret
- ;-------------------------------------------------------------------Send_Receive
- ;收发消息
- Send_Receive:
- mov eax,SEND_RECEIVE_FUNCTION_NO
- mov edx,[esp + 12] ;Message指针->edx
- mov ecx,[esp + 8] ;源进程pid->ecx
- mov edi,[esp + 4] ;功能号function->ebx
- int SYSTEM_CALL_INT_VECTOR
- ret