📄 lib386.txt
字号:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
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 + -