⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 call.s

📁 国内一位牛人自己开发的操作系统
💻 S
字号:
.global call_os_kernel,call_memory_manager,check_point_routine
call_os_kernel:
	pushl %ebp
	movl 0x08(%esp),%ebp

	movl 0x00(%ebp),%eax	
	movl 0x04(%ebp),%ebx	
	movl 0x08(%ebp),%ecx	
	movl 0x0c(%ebp),%edx	
	movl 0x10(%ebp),%esi	
	movl 0x14(%ebp),%edi	
	movl 0x18(%ebp),%ebp	

	cmpl $(0x06),%eax
	jne 2f			
	int $(0x80)		
	movl %eax,%esi	
	andl $(0x80000000),%esi
	jne 3f			
	cmpl $(0x00),%ebx	
	je 3f			

	movl %edx,%esp	
	call *%ecx		
1:				
	movl $(0x03),%eax	
	movl $(0x01),%ebx	
	int $(0x80)		
	jmp 1b			
2:				
	int $(0x80)		
3:				

	movl 0x08(%esp),%ebp
	movl %eax,0x00(%ebp)
	movl %ebx,0x04(%ebp)
	movl %ecx,0x08(%ebp)
	movl %edx,0x0c(%ebp)
	movl %esi,0x10(%ebp)
	movl %edi,0x14(%ebp)

	popl %ebp		

	ret

call_memory_manager:
	pushl %ebp
	movl 0x08(%esp),%ebp

	movl 0x00(%ebp),%eax	
	movl 0x04(%ebp),%ebx	
	movl 0x08(%ebp),%ecx	
	movl 0x0c(%ebp),%edx	
	movl 0x10(%ebp),%esi	
	movl 0x14(%ebp),%edi	
	movl 0x18(%ebp),%ebp	

	int $(0x81)

	movl 0x08(%esp),%ebp
	movl %eax,0x00(%ebp)
	movl %ebx,0x04(%ebp)
	movl %ecx,0x08(%ebp)
	movl %edx,0x0c(%ebp)
	movl %esi,0x10(%ebp)
	movl %edi,0x14(%ebp)

	popl %ebp		

	ret

check_point_routine:
	movl $(0x00),%eax
	movl $(0x00),%ebx
	movl $(0x00),%ecx
	int $(0x80)
	pushl %eax
	andl $(0x80000000),%eax
	cmpl $(0x00),%eax
	jne migration_fail
	cmpl $(0x00),%ecx
	jne caller
	popl %eax
callee:
	movl 0x08(%esp),%eax
	movl 0x0c(%esp),%ebx
	pushl %ebx
	call *%eax
	popl %ebx
1:
	movl $(0x03),%eax
	movl $(0x01),%ebx
	movl $(0x01),%ecx
	int $(0x80)
	jmp 1b
caller:
migration_fail:
	movl 0x08(%esp),%eax
	movl %ebx,(%eax)
	popl %eax
	ret

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -