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

📄 lib386.t

📁 操作系统设计与实现源码
💻 T
📖 第 1 页 / 共 5 页
字号:
03138	        mov     ax,-102103139	2:.Op 17 src/lib/i386/em/em_fef8.s03140	        test    dx,0x10000003141	        jne     1f03142	        dec     ax03143	        shl     8(bx),103144	        rcl     dx,103145	        or      dx,cx03146	        jmp     2b03147	1:03148	        and     dx,0x800fffff03149	        or      dx,0x3fe00000   ! load -1 exponent03150	        mov     cx,8(bx)03151	        mov     bx,4(bx)03152	        mov     (bx),ax03153	        mov     8(bx),dx03154	        mov     4(bx),cx03155	        ret++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++			src/lib/i386/em/em_fif4.s	 	 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++03200	.sect .text; .sect .rom; .sect .data; .sect .bss03201	.define .fif403202	03203	        .sect .text03204	.fif4:03205	        mov     bx,sp03206	        flds    8(bx)03207	        fmuls   12(bx)          ! multiply03208	        fld     st              ! copy result03209	        ftst                    ! test sign; handle negative separately03210	        fstsw   ax03211	        wait03212	        sahf                    ! result of test in condition codes03213	        jb      1f03214	        frndint                 ! this one rounds (?)03215	        fcom    st(1)           ! compare with original; if <=, then OK03216	        fstsw   ax03217	        wait03218	        sahf03219	        jbe     2f03220	        fisubs  (one)           ! else subtract 103221	        jmp     2f03222	1:                              ! here, negative case03223	        frndint                 ! this one rounds (?)03224	        fcom    st(1)           ! compare with original; if >=, then OK03225	        fstsw   ax03226	        wait03227	        sahf03228	        jae     2f03229	        fiadds  (one)           ! else add 103230	2:03231	        fsub    st(1),st        ! subtract integer part03232	        mov     bx,4(bx)03233	        fstps   (bx)03234	        fstps   4(bx).Ep 18 src/lib/i386/em/em_fif4.s03235	        wait03236	        ret++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++			src/lib/i386/em/em_fif8.s	 	 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++03300	.sect .text; .sect .rom; .sect .data; .sect .bss03301	.define .fif803302	03303	        .sect .text03304	.fif8:03305	        mov     bx,sp03306	        fldd    8(bx)03307	        fmuld   16(bx)          ! multiply03308	        fld     st              ! and copy result03309	        ftst                    ! test sign; handle negative separately03310	        fstsw   ax03311	        wait03312	        sahf                    ! result of test in condition codes03313	        jb      1f03314	        frndint                 ! this one rounds (?)03315	        fcom    st(1)           ! compare with original; if <=, then OK03316	        fstsw   ax03317	        wait03318	        sahf03319	        jbe     2f03320	        fisubs  (one)           ! else subtract 103321	        jmp     2f03322	1:                              ! here, negative case03323	        frndint                 ! this one rounds (?)03324	        fcom    st(1)           ! compare with original; if >=, then OK03325	        fstsw   ax03326	        wait03327	        sahf03328	        jae     2f03329	        fiadds  (one)           ! else add 103330	2:03331	        fsub    st(1),st        ! subtract integer part03332	        mov     bx,4(bx)03333	        fstpd   (bx)03334	        fstpd   8(bx)03335	        wait03336	        ret.Op 19 src/lib/i386/em/em_fp8087.s++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++			src/lib/i386/em/em_fp8087.s	 	 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++03400	.sect .text; .sect .rom; .sect .data; .sect .bss03401	.define one, bigmin03402	03403	        .sect .rom03404	one:03405	        .data2  103406	two:03407	        .data2  203408	bigmin:03409	        .data4  -2147483648++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++			src/lib/i386/em/em_gto.s	 	 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++03500	.sect .text; .sect .rom; .sect .data; .sect .bss03501	.sect .text03502	.define .gto03503	03504	.gto:03505	        mov     ebp,8(ebx)03506	        mov     esp,4(ebx)03507	        jmp     (ebx)++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++			src/lib/i386/em/em_iaar.s	 	 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++03600	.sect .text; .sect .rom; .sect .data; .sect .bss03601	.sect .text03602	.define .iaar03603	03604	.iaar:03605	        pop     ecx03606	        pop     edx03607	        cmp     edx,403608	.extern .unknown03609	        jne     .unknown03610	        pop     ebx     ! descriptor address03611	        pop     eax     ! index03612	        sub     eax,(ebx)03613	        mul     8(ebx)03614	        pop     ebx     ! array base03615	        add     ebx,eax03616	        push    ecx03617	        ret.Ep 20 src/lib/i386/em/em_ilar.s++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++			src/lib/i386/em/em_ilar.s	 	 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++03700	.sect .text; .sect .rom; .sect .data; .sect .bss03701	.sect .text03702	.define .ilar03703	03704	.ilar:03705	        pop     ecx03706	        pop     edx03707	.extern .unknown03708	        cmp     edx,403709	        jne     .unknown03710	        pop     ebx      ! descriptor address03711	        pop     eax      ! index03712	        push    ecx03713	.extern .lar403714	        jmp    .lar4++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++			src/lib/i386/em/em_inn.s	 	 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++03800	.sect .text; .sect .rom; .sect .data; .sect .bss03801	.sect .text03802	.define .inn03803	03804	        ! #bytes in ecx03805	        ! bit # in eax03806	.inn:03807	        xor     edx,edx03808	        mov     ebx,803809	        div     ebx03810	        mov     ebx,esp03811	        add     ebx,403812	        add     ebx,eax03813	        cmp     eax,ecx03814	        jae     1f03815	        movb    al,(ebx)03816	        mov     ebx,edx03817	        testb   al,bits(ebx)03818	        jz      1f03819	        mov     eax,103820	        jmp     2f03821	1:03822	        xor     eax,eax03823	2:03824	        pop     ebx03825	        add     esp,ecx03826	        ! eax is result03827	        jmp     ebx03828	03829	        .sect .rom.Op 21 src/lib/i386/em/em_inn.s03830	bits:03831	        .data1 1,2,4,8,16,32,64,128++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++			src/lib/i386/em/em_ior.s	 	 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++03900	.sect .text; .sect .rom; .sect .data; .sect .bss03901	.sect .text03902	.define .ior03903	03904	        ! #bytes in ecx03905	.ior:03906	        pop     ebx             ! return address03907	        mov     edx,edi03908	        mov     edi,esp03909	        add     edi,ecx03910	        sar     ecx,203911	1:03912	        pop     eax03913	        or      eax,(edi)03914	        stos03915	        loop    1b03916	        mov     edi,edx03917	        jmp     ebx++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++			src/lib/i386/em/em_isar.s	 	 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++04000	.sect .text; .sect .rom; .sect .data; .sect .bss04001	.sect .text04002	.define .isar04003	04004	.isar:04005	        pop     ecx04006	        pop     eax04007	        cmp     eax,404008	.extern .unknown04009	        jne     .unknown04010	        pop     ebx      ! descriptor address04011	        pop     eax      ! index04012	        push    ecx04013	.extern .sar404014	        jmp    .sar4.Ep 22 src/lib/i386/em/em_lar4.s++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++			src/lib/i386/em/em_lar4.s	 	 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++04100	.sect .text; .sect .rom; .sect .data; .sect .bss04101	.sect .text04102	.define .lar404103	04104	.lar4:04105	                                ! ebx, descriptor address04106	                                ! eax, index04107	        sub     eax,(ebx)04108	        mov     ecx,8(ebx)04109	        imul    ecx04110	        pop     ebx04111	        pop     edx             ! base address04112	        add     edx,eax04113	        sar     ecx,104114	        jnb     1f04115	        xor     eax,eax04116	        movb    al,(edx)04117	        push    eax04118	        jmp     ebx04119	1:04120	        sar     ecx,104121	        jnb     1f04122	        xor     eax,eax04123	        o16 mov ax,(edx)04124	        push    eax04125	        jmp     ebx04126	1:04127	        xchg    edx,esi         ! saved esi04128	        mov     eax,ecx04129	        sal     eax,204130	        sub     esp,eax04131	        mov     eax,edi         ! save edi04132	        mov     edi,esp04133	        rep movs04134	        mov     edi,eax04135	        mov     esi,edx04136	        jmp     ebx++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++			src/lib/i386/em/em_loi.s	 	 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++04200	.sect .text; .sect .rom; .sect .data; .sect .bss04201	.sect .text04202	.define .loi04203	.define .los04204	04205	        ! #bytes in ecx04206	        ! address in ebx04207	        ! save esi/edi. they might be register variables04208	.los:04209	        pop     edx.Op 23 src/lib/i386/em/em_loi.s04210	        mov     eax,ecx04211	        sar     ecx,104212	        jnb     1f04213	        movsxb  eax,(ebx)04214	        push    eax04215	        jmp     edx04216	1:04217	        sar     ecx,104218	        jnb     1f04219	        movsx   eax,(ebx)04220	        push    eax04221	        jmp     edx04222	1:04223	        push    edx04224	        mov     edx,esi04225	        mov     esi,ebx04226	        pop     ebx04227	        sub     esp,eax04228	        jmp     1f04229	04230	.loi:04231	        ! only called with size >= 404232	        mov     edx,esi04233	        mov     esi,ebx04234	        pop     ebx04235	        sub     esp,ecx04236	        sar     ecx,204237	1:04238	        mov     eax,edi04239	        mov     edi,esp04240	        rep movs04241	        mov     esi,edx04242	        mov     edi,eax04243	        jmp     ebx++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++			src/lib/i386/em/em_mlf4.s	 	 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++04300	.sect .text; .sect .rom; .sect .data; .sect .bss04301	.define .mlf404302	04303	        .sect .text04304	.mlf4:04305	        mov     bx,sp04306	        flds    4(bx)04307	        fmuls   8(bx)04308	        fstps   8(bx)04309	        wait04310	        ret.Ep 24 src/lib/i386/em/em_mlf8.s++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++			src/lib/i386/em/em_mlf8.s	 	 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++04400	.sect .text; .sect .rom; .sect .data; .sect .bss04401	.define .mlf804402	04403	        .sect .text04404	.mlf8:04405	        mov     bx,sp04406	        fldd    4(bx)04407	        fmuld   12(bx)04408	        fstpd   12(bx)04409	        wait04410	        ret++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++			src/lib/i386/em/em_mli.s	 	 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++04500	.sect .text; .sect .rom; .sect .data; .sect .bss04501	.sect .text04502	.define .mli04503	04504	        ! #bytes in eax04505	.mli:04506	        pop     ebx              ! return address04507	        cmp     eax,404508	        jne     1f04509	        pop     eax04510	        pop     ecx04511	        mul     ecx04512	        push    eax04513	        jmp     ebx04514	1:04515	.extern EODDZ04516	.extern .trp04517	        mov     eax,EODDZ04518	        push    ebx04519	        jmp     .trp.Op 25 src/lib/i386/em/em_mon.s++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++			src/lib/i386/em/em_mon.s	 	 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++04600	.sect .text; .sect .rom; .sect .data; .sect .bss04601	.sect .text04602	.define .mon04603	04604	.mon:04605	.extern .stop04606	        call    .stop++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

⌨️ 快捷键说明

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