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