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