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

📄 lib386.t

📁 操作系统设计与实现源码
💻 T
📖 第 1 页 / 共 5 页
字号:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++			src/lib/i386/em/em_csa4.s	 	 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++01700	.sect .text; .sect .rom; .sect .data; .sect .bss01701	.define .csa401702	01703	.sect .text01704	.csa4:01705	                                ! ebx, descriptor address01706	                                ! eax, index01707	        mov     edx,(ebx)         ! default01708	        sub     eax,4(ebx)01709	        cmp     eax,8(ebx)01710	        ja      1f01711	        sal     eax,201712	        add     ebx,eax01713	        mov     ebx,12(ebx)01714	        test    ebx,ebx01715	        jnz     2f01716	1:01717	        mov     ebx,edx01718	        test    ebx,ebx01719	        jnz     2f01720	.extern ECASE01721	.extern .fat01722	        mov     eax,ECASE01723	        push    eax01724	        jmp     .fat01725	2:01726	        jmp     ebx++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++			src/lib/i386/em/em_csb4.s	 	 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++01800	.sect .text; .sect .rom; .sect .data; .sect .bss01801	.define .csb401802	01803	.sect .text01804	.csb4:01805	                                !ebx, descriptor address01806	                                !eax,  index01807	        mov     edx,(ebx)01808	        mov     ecx,4(ebx)01809	1:01810	        add     ebx,801811	        dec     ecx01812	        jl      4f01813	        cmp     eax,(ebx)01814	        jne     1b01815	        mov     ebx,4(ebx)01816	2:01817	        test    ebx,ebx01818	        jnz     3f01819	.extern ECASE.Ep 10 src/lib/i386/em/em_csb4.s01820	.extern .fat01821	        mov     eax,ECASE01822	        push    eax01823	        jmp     .fat01824	3:01825	        jmp     ebx01826	4:01827	        mov     ebx,edx01828	        jmp     2b++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++			src/lib/i386/em/em_cuf4.s	 	 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++01900	.sect .text; .sect .rom; .sect .data; .sect .bss01901	.define .cuf401902	01903	        .sect .text01904	.cuf4:01905	        mov     bx,sp01906	        fildl   8(bx)01907	        cmp     8(bx),001908	        jge     1f01909	        fisubl  (bigmin)01910	        fisubl  (bigmin)01911	1:01912	        fstps   8(bx)01913	        wait01914	        ret++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++			src/lib/i386/em/em_cuf8.s	 	 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++02000	.sect .text; .sect .rom; .sect .data; .sect .bss02001	.define .cuf802002	02003	        .sect .text02004	.cuf8:02005	        mov     bx,sp02006	        fildl   8(bx)02007	        cmp     8(bx),002008	        jge     1f02009	        fisubl  (bigmin)02010	        fisubl  (bigmin)02011	1:02012	        fstpd   4(bx)02013	        wait02014	        ret.Op 11 src/lib/i386/em/em_cuu.s++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++			src/lib/i386/em/em_cuu.s	 	 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++02100	.sect .text; .sect .rom; .sect .data; .sect .bss02101	.define .ciu02102	.define .cui02103	.define .cuu02104	02105	.sect .text02106	.ciu:02107	.cui:02108	.cuu:02109	        pop     ebx              ! return address02110	                                ! pop     ecx, dest. size02111	                                ! pop     edx, source size02112	                                ! eax is source02113	        cmp     edx,ecx02114	        jne     8f02115	        jmp     ebx02116	8:02117	.extern EILLINS02118	.extern .fat02119	        mov     eax,EILLINS02120	        push    eax02121	        jmp     .fat++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++			src/lib/i386/em/em_dup.s	 	 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++02200	.sect .text; .sect .rom; .sect .data; .sect .bss02201	.define .dup02202	02203	        ! #bytes in ecx02204	        .sect .text02205	.dup:02206	        pop     ebx             ! return address02207	        mov     eax,esi02208	        mov     edx,edi02209	        mov     esi,esp02210	        sub     esp,ecx02211	        mov     edi,esp02212	        sar     ecx,202213	        rep movs02214	        mov     esi,eax02215	        mov     edi,edx02216	        jmp     ebx.Ep 12 src/lib/i386/em/em_dvf4.s++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++			src/lib/i386/em/em_dvf4.s	 	 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++02300	.sect .text; .sect .rom; .sect .data; .sect .bss02301	.define .dvf402302	02303	        .sect .text02304	.dvf4:02305	        mov     bx,sp02306	        flds    8(bx)02307	        fdivs   4(bx)02308	        fstps   8(bx)02309	        wait02310	        ret++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++			src/lib/i386/em/em_dvf8.s	 	 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++02400	.sect .text; .sect .rom; .sect .data; .sect .bss02401	.define .dvf802402	02403	        .sect .text02404	.dvf8:02405	        mov     bx,sp02406	        fldd    12(bx)02407	        fdivd   4(bx)02408	        fstpd   12(bx)02409	        wait02410	        ret++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++			src/lib/i386/em/em_dvi.s	 	 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++02500	.sect .text; .sect .rom; .sect .data; .sect .bss02501	.define .dvi02502	02503	        ! #bytes in eax02504	        .sect .text02505	.dvi:02506	        pop     ebx              ! return address02507	        cmp     eax,402508	        jne     1f02509	        pop     eax02510	        cwd02511	        pop     ecx02512	        idiv    ecx02513	        push    eax02514	        jmp     ebx.Op 13 src/lib/i386/em/em_dvi.s02515	1:02516	.extern EODDZ02517	.extern .trp02518	        mov     eax,EODDZ02519	        push    ebx02520	        jmp     .trp++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++			src/lib/i386/em/em_dvu.s	 	 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++02600	.sect .text; .sect .rom; .sect .data; .sect .bss02601	.define .dvu02602	02603	        ! #bytes in eax02604	        .sect .text02605	.dvu:02606	        pop     ebx              ! return address02607	        cmp     eax,402608	        jne     1f02609	        pop     eax02610	        xor     edx,edx02611	        pop     ecx02612	        div     ecx02613	        push    eax02614	        jmp     ebx02615	1:02616	.extern EODDZ02617	.extern .trp02618	        mov     eax,EODDZ02619	        push    ebx02620	        jmp     .trp++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++			src/lib/i386/em/em_error.s	 	 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++02700	.sect .text; .sect .rom; .sect .data; .sect .bss02701	.define .error02702	.define .Xtrp02703	02704	        ! eax is trap number02705	        ! all registers must be saved02706	        ! because return is possible02707	        ! May only be called with error no's <1602708	.sect .text02709	.error:02710	        mov  ecx,eax02711	        mov  ebx,102712	        sal  ebx,cl02713	.extern .ignmask02714	.extern .trp.Ep 14 src/lib/i386/em/em_error.s02715	        test ebx,(.ignmask)02716	        jne  2f02717	        call    .trp02718	2:02719	        ret02720	02721	.Xtrp:02722	        pusha02723	        cmp     eax,1602724	        jge     1f02725	        call    .error02726	        popa02727	        ret02728	1:02729	        call    .trp02730	        popa02731	        ret++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++			src/lib/i386/em/em_exg.s	 	 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++02800	.sect .text; .sect .rom; .sect .data; .sect .bss02801	.define .exg02802	02803	        ! #bytes in ecx02804	.sect .text02805	.exg:02806	        push    edi02807	        mov     edi,esp02808	        add     edi,802809	        mov     ebx,edi02810	        add     ebx,ecx02811	        sar     ecx,202812	1:02813	        mov     eax,(ebx)02814	        xchg    eax,(edi)02815	        mov     (ebx),eax02816	        add     edi,402817	        add     ebx,402818	        loop    1b02819	2:02820	        pop     edi02821	        ret.Op 15 src/lib/i386/em/em_fat.s++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++			src/lib/i386/em/em_fat.s	 	 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++02900	.sect .text; .sect .rom; .sect .data; .sect .bss02901	.sect .text02902	.define .fat02903	02904	.fat:02905	.extern .trp02906	.extern .stop02907	        call    .trp02908	        call    .stop02909	        ! no return++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++			src/lib/i386/em/em_fef4.s	 	 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++03000	.sect .text; .sect .rom; .sect .data; .sect .bss03001	.define .fef403002	03003	        .sect .text03004	.fef4:03005	                                ! this could be simpler, if only the03006	                                ! fxtract instruction was emulated properly03007	        mov     bx,sp03008	        mov     ax,8(bx)03009	        and     ax,0x7f80000003010	        je      1f              ! zero exponent03011	        shr     ax,2303012	        sub     ax,12603013	        mov     cx,ax           ! exponent in cx03014	        mov     ax,8(bx)03015	        and     ax,0x807fffff03016	        or      ax,0x3f000000   ! load -1 exponent03017	        mov     bx,4(bx)03018	        mov     4(bx),ax03019	        mov     (bx),cx03020	        ret03021	1:                              ! we get here on zero exp03022	        mov     ax,8(bx)03023	        and     ax,0x007fffff03024	        jne     1f              ! zero result03025	        mov     bx,4(bx)03026	        mov     (bx),ax03027	        mov     4(bx),ax03028	        ret03029	1:                              ! otherwise unnormalized number03030	        mov     cx,8(bx)03031	        and     cx,0x807fffff03032	        mov     dx,cx03033	        and     cx,0x8000000003034	        mov     ax,-125.Ep 16 src/lib/i386/em/em_fef4.s03035	2:03036	        test    dx,0x80000003037	        jne     1f03038	        dec     ax03039	        shl     dx,103040	        or      dx,cx03041	        jmp     2b03042	1:03043	        mov     bx,4(bx)03044	        mov     (bx),ax03045	        and     dx,0x807fffff03046	        or      dx,0x3f000000   ! load -1 exponent03047	        mov     4(bx),dx03048	        ret++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++			src/lib/i386/em/em_fef8.s	 	 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++03100	.sect .text; .sect .rom; .sect .data; .sect .bss03101	.define .fef803102	03103	        .sect .text03104	.fef8:03105	                                ! this could be simpler, if only the03106	                                ! fxtract instruction was emulated properly03107	        mov     bx,sp03108	        mov     ax,12(bx)03109	        and     ax,0x7ff0000003110	        je      1f              ! zero exponent03111	        shr     ax,2003112	        sub     ax,102203113	        mov     cx,ax           ! exponent in cx03114	        mov     ax,12(bx)03115	        and     ax,0x800fffff03116	        or      ax,0x3fe00000   ! load -1 exponent03117	        mov     dx,8(bx)03118	        mov     bx,4(bx)03119	        mov     4(bx),dx03120	        mov     8(bx),ax03121	        mov     (bx),cx03122	        ret03123	1:                              ! we get here on zero exp03124	        mov     ax,12(bx)03125	        and     ax,0xfffff03126	        or      ax,8(bx)03127	        jne     1f              ! zero result03128	        mov     bx,4(bx)03129	        mov     (bx),ax03130	        mov     4(bx),ax03131	        mov     8(bx),ax03132	        ret03133	1:                              ! otherwise unnormalized number03134	        mov     cx,12(bx)03135	        and     cx,0x800fffff03136	        mov     dx,cx03137	        and     cx,0x80000000

⌨️ 快捷键说明

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