?? save.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 + -