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

📄 save.s

📁 国内一位牛人自己开发的操作系统
💻 S
字号:
.global save_parameter
save_parameter:	/*save thread parameter	when enter os kernel*/
	pushl %edi		/*push edi,eax,ds into stack */
	pushl %eax
	movl %ds,%eax
	pushl %eax
	
	movl %ss,%eax		/*set segment register */
	movl %eax,%ds
	movl current,%edi		/*compute where to save */
	cmpl $(0x00),%edi
	jne 1f
	movl %eax,%es
	movl %eax,%fs
	movl %eax,%gs
	popl %eax
	popl %eax
	popl %eax
	ret
1:	
	popl 0x34(%edi)			/* save ds from stack*/
	movl %es,%eax			/* save es */
	movl %eax,0x38(%edi)		
	movl %fs,%eax			/* save fs */
	movl %eax,0x3c(%edi)
	movl %gs,%eax			/* save gs */
	movl %eax,0x40(%edi)

	popl 0x00(%edi)			/*save eax from stack*/
	movl %ebx,0x04(%edi)		/*save ebx */
	movl %ecx,0x08(%edi)		/*save ecx */
	movl %edx,0x0c(%edi)		/*save edx */
	movl %esi,0x10(%edi)		/*save esi */
	popl 0x14(%edi)			/*save edi from stack*/
	movl %ebp,0x18(%edi)		/*save ebp */

	popl %eax			/*pop return address to eax*/

	popl 0x20(%edi)			/*save eip */
	popl 0x24(%edi)			/*save  cs */
	popl 0x28(%edi)			/*save eflag*/
	popl 0x2c(%edi)			/*save esp */
	popl 0x30(%edi)			/*save ess */

	movl %esp,0x44(%edi)		/*save sp_0 */

	movl $(0x00),0x48(%edi)	
	pushl %eax	/*pushl return address(in eax) */
	movl %ds,%eax
	movl %eax,%es
	movl %eax,%fs
	movl %eax,%gs

	ret		/*return to caller */

⌨️ 快捷键说明

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