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

📄 call_mem.s

📁 国内一位牛人自己开发的操作系统
💻 S
字号:
.global memory_call_interruption_routine,call_device_driver,reload_cr3
memory_call_interruption_routine:
	pushl %ebp
	movl %gs,%ebp
	pushl %ebp
	movl %fs,%ebp
	pushl %ebp
	movl %es,%ebp
	pushl %ebp
	movl %ds,%ebp
	pushl %ebp

	movl %ss,%ebp
	movl %ebp,%ds
	movl %ebp,%es
	movl %ebp,%fs
	movl %ebp,%gs

	pushl %ebp
	pushl %edi
	pushl %esi
	pushl %edx
	pushl %ecx
	pushl %ebx
	pushl %eax

	pushl %esp
	call memory_call_process
	pushl %eax

	cmpl $(0x00),reload_cr3_flag
	je 1f
	movl $(0x00),reload_cr3_flag
	movl %cr3,%eax
	movl %eax,%cr3
1:
	popl %eax
	popl %ebx
	popl %ebx
	popl %ebx
	popl %ecx
	popl %edx
	popl %esi
	popl %edi
	popl %ebp

	popl %ebp
	movl %ebp,%ds
	popl %ebp
	movl %ebp,%es
	popl %ebp
	movl %ebp,%fs
	popl %ebp
	movl %ebp,%gs

	popl %ebp

	iret

call_device_driver:
	movl %esp,%ebx
	movl 0x08(%ebx),%esp
	addl $(0xffc),%esp
	pushfl
	sti
	pushl %ebx
	pushl 0x08(%ebx)
	call *0x04(%ebx)
	popl %ebx
	popl %ebx
	popfl
	movl %ebx,%esp
	ret
 reload_cr3:
	movl %cr3,%eax
	movl %eax,%cr3
	ret

⌨️ 快捷键说明

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