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

📄 lib386.txt

📁 操作系统设计与实现源码
💻 TXT
📖 第 1 页 / 共 5 页
字号:


++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
			src/lib/i386/em/byte_order.h	 	 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

00000	#define CHAR_UNSIGNED   0
00001	#define MSB_AT_LOW_ADDRESS      0
00002	#define MSW_AT_LOW_ADDRESS      0
00003	#define FL_MSB_AT_LOW_ADDRESS   0
00004	#define FL_MSW_AT_LOW_ADDRESS   0
00005	#define FL_MSL_AT_LOW_ADDRESS   0

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
			src/lib/i386/em/em_adf4.s	 	 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

00100	.sect .text; .sect .rom; .sect .data; .sect .bss
00101	.define .adf4
00102	
00103	        .sect .text
00104	.adf4:
00105	        mov     bx,sp
00106	        flds    4(bx)
00107	        fadds   8(bx)
00108	        fstps   8(bx)
00109	        wait
00110	        ret

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
			src/lib/i386/em/em_adf8.s	 	 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

00200	.sect .text; .sect .rom; .sect .data; .sect .bss
00201	.define .adf8
00202	
00203	        .sect .text
00204	.adf8:
00205	        mov     bx,sp
00206	        fldd    4(bx)
00207	        faddd   12(bx)
00208	        fstpd   12(bx)
00209	        wait
00210	        ret

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
			src/lib/i386/em/em_adi.s	 	 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

00300	.sect .text; .sect .rom; .sect .data; .sect .bss
00301	.define .adi
00302	
00303	        ! #bytes in ecx , top of stack in eax
00304	        .sect .text
00305	.adi:
00306	        pop     ebx              ! return address
00307	        cmp     ecx,4
00308	        jne     9f
00309	        pop     ecx
00310	        add     eax,ecx
00311	        jmp     ebx
00312	9:
00313	.extern EODDZ
00314	.extern .trp
00315	        mov     eax,EODDZ
00316	        push    ebx
00317	        jmp     .trp

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
			src/lib/i386/em/em_and.s	 	 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

00400	.sect .text; .sect .rom; .sect .data; .sect .bss
00401	.define .and
00402	
00403	        ! #bytes in ecx
00404	        ! save edi; it might be a register variable
00405	
00406	        .sect .text
00407	.and:
00408	        pop     ebx             ! return address
00409	        mov     edx,edi
00410	        mov     edi,esp
00411	        add     edi,ecx
00412	        sar     ecx,2
00413	1:
00414	        pop     eax
00415	        and     eax,(edi)
00416	        stos
00417	        loop    1b
00418	        mov     edi,edx
00419	        jmp     ebx

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
			src/lib/i386/em/em_blm.s	 	 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

00500	.sect .text; .sect .rom; .sect .data; .sect .bss
00501	.sect .text
00502	.define .blm
00503	
00504	        ! ecx: count in words
00505	.blm:
00506	        mov     ebx,esp
00507	        mov     eax,esi
00508	        mov     edx,edi
00509	        mov     edi,4(ebx)
00510	        mov     esi,8(ebx)
00511	        rep     movs
00512	        mov     esi,eax
00513	        mov     edi,edx
00514	        ret     8
00515	

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
			src/lib/i386/em/em_cff4.s	 	 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

00600	.sect .text; .sect .rom; .sect .data; .sect .bss
00601	.define .cff4
00602	
00603	        .sect .text
00604	.cff4:
00605	        mov     bx,sp
00606	        fldd    4(bx)
00607	        fstcw   4(bx)
00608	        wait
00609	        mov     dx,4(bx)
00610	        and     4(bx),0xf3ff    ! set to rounding mode
00611	        wait
00612	        fldcw   4(bx)
00613	        fstps   8(bx)
00614	        mov     4(bx),dx
00615	        wait
00616	        fldcw   4(bx)
00617	        wait
00618	        ret

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
			src/lib/i386/em/em_cff8.s	 	 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

00700	.sect .text; .sect .rom; .sect .data; .sect .bss
00701	.define .cff8
00702	
00703	        .sect .text
00704	.cff8:
00705	        mov     bx,sp
00706	        flds    4(bx)
00707	        fstpd   4(bx)
00708	        wait
00709	        ret

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
			src/lib/i386/em/em_cfi.s	 	 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

00800	.sect .text; .sect .rom; .sect .data; .sect .bss
00801	.define .cfi
00802	
00803	        .sect .text
00804	.cfi:
00805	        mov     bx,sp
00806	        fstcw   4(bx)
00807	        wait
00808	        mov     dx,4(bx)
00809	        or      4(bx),0xc00     ! truncating mode
00810	        wait
00811	        fldcw   4(bx)
00812	        cmp     8(bx),4
00813	        jne     2f
00814	                                ! loc 4 loc ? cfi
00815	        flds    12(bx)
00816	        fistpl  12(bx)
00817	1:
00818	        mov     4(bx),dx
00819	        wait
00820	        fldcw   4(bx)
00821	        ret
00822	2:
00823	                                ! loc 8 loc ? cfi
00824	        fldd    12(bx)
00825	        fistpl  16(bx)
00826	        jmp     1b

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
			src/lib/i386/em/em_cfu.s	 	 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

00900	.sect .text; .sect .rom; .sect .data; .sect .bss
00901	.define .cfu
00902	
00903	        .sect .text
00904	.cfu:
00905	        mov     bx,sp
00906	        fstcw   4(bx)
00907	        wait
00908	        mov     dx,4(bx)
00909	        or      4(bx),0xc00     ! truncating mode
00910	        wait
00911	        fldcw   4(bx)
00912	        cmp     8(bx),4
00913	        jne     2f
00914	                                ! loc 4 loc ? cfu
00915	        flds    12(bx)
00916	        fabs                    ! ???
00917	        fiaddl  (bigmin)
00918	        fistpl  12(bx)
00919	        wait
00920	        mov     ax,12(bx)
00921	        sub     ax,(bigmin)
00922	        mov     12(bx),ax
00923	1:
00924	        mov     4(bx),dx
00925	        wait
00926	        fldcw   4(bx)
00927	        ret
00928	2:
00929	                                ! loc 8 loc ? cfu
00930	        fldd    12(bx)
00931	        fabs                    ! ???
00932	        fiaddl  (bigmin)
00933	        fistpl  16(bx)
00934	        mov     ax,16(bx)
00935	        sub     ax,(bigmin)
00936	        mov     16(bx),ax
00937	        jmp     1b

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
			src/lib/i386/em/em_cif4.s	 	 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

01000	.sect .text; .sect .rom; .sect .data; .sect .bss
01001	.define .cif4
01002	
01003	        .sect .text
01004	.cif4:
01005	        mov     bx,sp
01006	        fildl   8(bx)
01007	        fstps   8(bx)
01008	        wait
01009	        ret

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
			src/lib/i386/em/em_cif8.s	 	 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

01100	.sect .text; .sect .rom; .sect .data; .sect .bss
01101	.define .cif8
01102	
01103	        .sect .text
01104	.cif8:
01105	        mov     bx,sp
01106	        fildl   8(bx)
01107	        fstpd   4(bx)
01108	        wait
01109	        ret

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
			src/lib/i386/em/em_cii.s	 	 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

01200	.sect .text; .sect .rom; .sect .data; .sect .bss
01201	.define .cii
01202	
01203	.sect .text
01204	.cii:
01205	        pop     ebx              ! return address
01206	                                ! pop     ecx, dest. size
01207	                                ! pop     edx, src. size
01208	                                ! eax is source
01209	        cmp     edx,1
01210	        jne     2f
01211	        movsxb  eax,al
01212	        mov     edx,4
01213	        jmp     1f
01214	2:
01215	        cmp     edx,2
01216	        jne     1f
01217	        cwde                    ! convert from 2 to 4 bytes
01218	        mov     edx,4
01219	1:
01220	        cmp     edx,ecx
01221	        jne     9f
01222	        cmp     edx,4
01223	        jne     9f
01224	        jmp     ebx
01225	9:
01226	.extern EILLINS
01227	.extern .fat
01228	        mov     eax,EILLINS
01229	        push    eax
01230	        jmp     .fat

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
			src/lib/i386/em/em_cmf4.s	 	 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

01300	.sect .text; .sect .rom; .sect .data; .sect .bss
01301	.define .cmf4
01302	
01303	        .sect .text
01304	.cmf4:
01305	        mov     bx,sp
01306	        xor     cx,cx
01307	        flds    8(bx)
01308	        flds    4(bx)
01309	        fcompp                  ! compare and pop operands
01310	        fstsw   ax
01311	        wait
01312	        sahf
01313	        je      1f
01314	        jb      2f
01315	        dec     cx
01316	        jmp     1f
01317	2:
01318	        inc     cx
01319	1:
01320	        mov     ax,cx
01321	        ret

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
			src/lib/i386/em/em_cmf8.s	 	 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

01400	.sect .text; .sect .rom; .sect .data; .sect .bss
01401	.define .cmf8
01402	
01403	        .sect .text
01404	.cmf8:
01405	        mov     bx,sp
01406	        xor     cx,cx
01407	        fldd    12(bx)
01408	        fldd    4(bx)
01409	        fcompp                  ! compare and pop operands
01410	        fstsw   ax
01411	        wait
01412	        sahf
01413	        je      1f
01414	        jb      2f
01415	        dec     cx
01416	        jmp     1f
01417	2:
01418	        inc     cx
01419	1:
01420	        mov     ax,cx
01421	        ret

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
			src/lib/i386/em/em_cms.s	 	 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

01500	.sect .text; .sect .rom; .sect .data; .sect .bss
01501	.define .cms
01502	
01503	        ! #bytes in ecx
01504	        .sect .text
01505	.cms:
01506	        pop     ebx              ! return address
01507	        mov     edx,esp
01508	        push    esi
01509	        push    edi
01510	        mov     esi,edx
01511	        add     edx,ecx
01512	        mov     edi,edx
01513	        add     edx,ecx
01514	        sar     ecx,2
01515	        repe cmps
01516	        je      1f
01517	        inc     ecx
01518	1:
01519	        pop     edi
01520	        pop     esi
01521	        mov     esp,edx
01522	        jmp     ebx

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
			src/lib/i386/em/em_com.s	 	 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

01600	.sect .text; .sect .rom; .sect .data; .sect .bss
01601	.define .com
01602	
01603	        ! #bytes in ecx
01604	        .sect .text
01605	.com:
01606	        mov     ebx,esp
01607	        add     ebx,4
01608	        sar     ecx,2
01609	1:
01610	        not     (ebx)
01611	        add     ebx,4
01612	        loop    1b
01613	        ret

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
			src/lib/i386/em/em_csa4.s	 	 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

01700	.sect .text; .sect .rom; .sect .data; .sect .bss
01701	.define .csa4
01702	
01703	.sect .text
01704	.csa4:
01705	                                ! ebx, descriptor address
01706	                                ! eax, index
01707	        mov     edx,(ebx)         ! default
01708	        sub     eax,4(ebx)
01709	        cmp     eax,8(ebx)
01710	        ja      1f
01711	        sal     eax,2
01712	        add     ebx,eax

⌨️ 快捷键说明

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