Rev 485 | Rev 551 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 485 | Rev 542 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | format binary |
1 | format binary |
2 | include '..\..\macros.inc' |
2 | include '../../macros.inc' |
3 | use32 |
3 | use32 |
4 | db 'MENUET01' |
4 | db 'MENUET01' |
5 | dd 1 |
5 | dd 1 |
6 | dd start |
6 | dd start |
7 | dd i_end |
7 | dd i_end |
Line 49... | Line 49... | ||
49 | 49 | ||
50 | wnd_x_size equ (data_x_pos + messages_x_size + data_x_pos) |
50 | wnd_x_size equ (data_x_pos + messages_x_size + data_x_pos) |
Line 51... | Line 51... | ||
51 | wnd_y_size equ (cmdline_y_pos + cmdline_y_size + data_x_pos) |
51 | wnd_y_size equ (cmdline_y_pos + cmdline_y_size + data_x_pos) |
- | 52 | ||
52 | 53 | start: |
|
53 | start: |
54 | mcall 68, 11 |
54 | mov edi, messages |
55 | mov edi, messages |
55 | mov ecx, messages_width*messages_height |
56 | mov ecx, messages_width*messages_height |
56 | mov al, ' ' |
57 | mov al, ' ' |
Line 802... | Line 803... | ||
802 | draw_disasm: |
803 | draw_disasm: |
803 | mov eax, [disasm_start_pos] |
804 | mov eax, [disasm_start_pos] |
804 | mov [disasm_cur_pos], eax |
805 | mov [disasm_cur_pos], eax |
805 | and [disasm_cur_str], 0 |
806 | and [disasm_cur_str], 0 |
806 | .loop: |
807 | .loop: |
- | 808 | mov eax, [disasm_cur_pos] |
|
- | 809 | call find_symbol |
|
- | 810 | jc .nosymb |
|
- | 811 | mov ebx, [disasm_cur_str] |
|
- | 812 | imul ebx, 10 |
|
- | 813 | add ebx, (data_x_pos+6*2)*10000h + disasm_y_pos |
|
- | 814 | mov edx, esi |
|
- | 815 | @@: lodsb |
|
- | 816 | test al, al |
|
- | 817 | jnz @b |
|
- | 818 | mov byte [esi-1], ':' |
|
- | 819 | sub esi, edx |
|
- | 820 | xor ecx, ecx |
|
- | 821 | push 4 |
|
- | 822 | pop eax |
|
- | 823 | mcall |
|
- | 824 | mov byte [esi+edx-1], 0 |
|
- | 825 | inc [disasm_cur_str] |
|
- | 826 | cmp [disasm_cur_str], disasm_height |
|
- | 827 | jae .loopend |
|
- | 828 | .nosymb: |
|
807 | push [disasm_cur_pos] |
829 | push [disasm_cur_pos] |
808 | call disasm_instr |
830 | call disasm_instr |
809 | pop ebp |
831 | pop ebp |
810 | jc .loopend |
832 | jc .loopend |
811 | xor esi, esi ; default color: black |
833 | xor esi, esi ; default color: black |
Line 902... | Line 924... | ||
902 | update_disasm_eip: |
924 | update_disasm_eip: |
903 | ; test if instruction at eip is showed |
925 | ; test if instruction at eip is showed |
904 | mov ecx, disasm_height |
926 | mov ecx, disasm_height |
905 | mov eax, [disasm_start_pos] |
927 | mov eax, [disasm_start_pos] |
906 | mov [disasm_cur_pos], eax |
928 | mov [disasm_cur_pos], eax |
- | 929 | .l: |
|
- | 930 | mov eax, [disasm_cur_pos] |
|
- | 931 | call find_symbol |
|
- | 932 | jc @f |
|
- | 933 | dec ecx |
|
- | 934 | jz .m |
|
907 | @@: |
935 | @@: |
908 | mov eax, [_eip] |
- | |
909 | cmp [disasm_cur_pos], eax |
936 | cmp [_eip], eax |
910 | jz redraw_disasm |
937 | jz redraw_disasm |
911 | push ecx |
938 | push ecx |
912 | call disasm_instr |
939 | call disasm_instr |
913 | pop ecx |
940 | pop ecx |
914 | jc @f |
941 | jc .m |
915 | loop @b |
942 | loop .l |
916 | @@: |
943 | .m: |
917 | update_disasm_eip_force: |
944 | update_disasm_eip_force: |
918 | mov eax, [_eip] |
945 | mov eax, [_eip] |
919 | mov [disasm_start_pos], eax |
946 | mov [disasm_start_pos], eax |
920 | update_disasm: |
947 | update_disasm: |
921 | cmp [debuggee_pid], 0 |
948 | cmp [debuggee_pid], 0 |
Line 949... | Line 976... | ||
949 | mcall |
976 | mcall |
950 | ; define window |
977 | ; define window |
951 | xor eax, eax |
978 | xor eax, eax |
952 | mov ebx, wnd_x_size |
979 | mov ebx, wnd_x_size |
953 | mov ecx, wnd_y_size |
980 | mov ecx, wnd_y_size |
954 | mov edx, 3FFFFFFh |
981 | mov edx, 13FFFFFFh |
955 | mcall |
- | |
956 | ; caption |
- | |
957 | mov al, 4 |
- | |
958 | mov ecx, 0xFFFFFF |
- | |
959 | mov ebx, 80008h |
- | |
960 | mov edx, caption_str |
982 | mov edi, caption_str |
961 | push caption_len |
- | |
962 | pop esi |
- | |
963 | mcall |
983 | mcall |
964 | ; messages frame |
984 | ; messages frame |
965 | mov al, 38 |
985 | mov al, 38 |
966 | mov ebx, (messages_x_pos-2)*10000h + (messages_x_pos+messages_x_size+2) |
986 | mov ebx, (messages_x_pos-2)*10000h + (messages_x_pos+messages_x_size+2) |
967 | push ebx |
987 | push ebx |
Line 1034... | Line 1054... | ||
1034 | .nocmd: |
1054 | .nocmd: |
1035 | mov esi, aUnknownCommand |
1055 | mov esi, aUnknownCommand |
1036 | jmp .x |
1056 | jmp .x |
Line 1037... | Line 1057... | ||
1037 | 1057 | ||
1038 | OnQuit: |
1058 | OnQuit: |
1039 | xor eax, eax |
1059 | push -1 |
1040 | dec eax |
1060 | pop eax |
Line 1041... | Line 1061... | ||
1041 | mcall |
1061 | mcall |
1042 | 1062 | ||
1043 | get_new_context: |
1063 | get_new_context: |
Line 1135... | Line 1155... | ||
1135 | cmp al, 0 |
1155 | cmp al, 0 |
1136 | jz @f |
1156 | jz @f |
1137 | mov [load_params], esi |
1157 | mov [load_params], esi |
1138 | @@: |
1158 | @@: |
1139 | and [dumppos], 0 |
1159 | and [dumppos], 0 |
- | 1160 | mov ecx, [symbols] |
|
- | 1161 | jecxz do_reload |
|
- | 1162 | mcall 68, 13 |
|
- | 1163 | and [symbols], 0 |
|
- | 1164 | and [num_symbols], 0 |
|
1140 | do_reload: |
1165 | do_reload: |
1141 | push 18 |
1166 | push 18 |
1142 | pop eax |
1167 | pop eax |
1143 | push 7 |
1168 | push 7 |
1144 | pop ebx |
1169 | pop ebx |
Line 1189... | Line 1214... | ||
1189 | call update_disasm_eip_force |
1214 | call update_disasm_eip_force |
1190 | mov esi, load_succ_msg |
1215 | mov esi, load_succ_msg |
1191 | push [debuggee_pid] |
1216 | push [debuggee_pid] |
1192 | call put_message_nodraw |
1217 | call put_message_nodraw |
1193 | call draw_messages |
1218 | call draw_messages |
- | 1219 | ; try to load symbols |
|
- | 1220 | mov esi, loadname |
|
- | 1221 | mov edi, symbolsfile |
|
- | 1222 | push edi |
|
- | 1223 | @@: |
|
- | 1224 | lodsb |
|
- | 1225 | stosb |
|
- | 1226 | test al, al |
|
- | 1227 | jnz @b |
|
- | 1228 | lea ecx, [edi-1] |
|
- | 1229 | @@: |
|
- | 1230 | dec edi |
|
- | 1231 | cmp edi, symbolsfile |
|
- | 1232 | jb @f |
|
- | 1233 | cmp byte [edi], '/' |
|
- | 1234 | jz @f |
|
- | 1235 | cmp byte [edi], '.' |
|
- | 1236 | jnz @b |
|
- | 1237 | mov ecx, edi |
|
- | 1238 | @@: |
|
- | 1239 | mov dword [ecx], '.dbg' |
|
- | 1240 | mov byte [ecx+4], 0 |
|
- | 1241 | pop esi |
|
- | 1242 | mov ebp, esi |
|
- | 1243 | call OnLoadSymbols.silent |
|
1194 | ; now test for packed progs |
1244 | ; now test for packed progs |
1195 | cmp [disasm_buf_size], 100h |
1245 | cmp [disasm_buf_size], 100h |
1196 | jz @f |
1246 | jz @f |
1197 | ret |
1247 | ret |
1198 | @@: |
1248 | @@: |
Line 1485... | Line 1535... | ||
1485 | mcall |
1535 | mcall |
1486 | and [debuggee_pid], 0 |
1536 | and [debuggee_pid], 0 |
1487 | call redraw_title |
1537 | call redraw_title |
1488 | call redraw_registers |
1538 | call redraw_registers |
1489 | call redraw_dump |
1539 | call redraw_dump |
- | 1540 | call free_symbols |
|
1490 | mov esi, aContinued |
1541 | mov esi, aContinued |
1491 | jmp put_message |
1542 | jmp put_message |
Line 1492... | Line 1543... | ||
1492 | 1543 | ||
1493 | after_go_exception: |
1544 | after_go_exception: |
Line 1590... | Line 1641... | ||
1590 | mov ecx, breakpoints_n*6/4+4 |
1641 | mov ecx, breakpoints_n*6/4+4 |
1591 | mov edi, breakpoints |
1642 | mov edi, breakpoints |
1592 | rep stosd |
1643 | rep stosd |
1593 | cmp [bReload], 1 |
1644 | cmp [bReload], 1 |
1594 | sbb [bReload], -1 |
1645 | sbb [bReload], -1 |
- | 1646 | jnz exception.done |
|
- | 1647 | call free_symbols |
|
1595 | jmp exception.done |
1648 | jmp exception.done |
1596 | exception: |
1649 | exception: |
1597 | mov [bSuspended], 1 |
1650 | mov [bSuspended], 1 |
1598 | cmp [bAfterGo], 0 |
1651 | cmp [bAfterGo], 0 |
1599 | jnz after_go_exception |
1652 | jnz after_go_exception |
Line 1719... | Line 1772... | ||
1719 | pop eax |
1772 | pop eax |
1720 | jnz .doit |
1773 | jnz .doit |
1721 | cmp al, 0xCD |
1774 | cmp al, 0xCD |
1722 | jz .int |
1775 | jz .int |
1723 | cmp ax, 0x050F |
1776 | cmp ax, 0x050F |
1724 | jz .syscall_enter |
1777 | jz .syscall |
1725 | cmp ax, 0x340F |
1778 | cmp ax, 0x340F |
1726 | jz .syscall_enter |
1779 | jz .sysenter |
1727 | ; resume process |
1780 | ; resume process |
1728 | .doit: |
1781 | .doit: |
1729 | call GoOn |
1782 | call GoOn |
1730 | cmp [bAfterGo], 0 |
1783 | cmp [bAfterGo], 0 |
1731 | jz @f |
1784 | jz @f |
1732 | mov [bAfterGo], 2 |
1785 | mov [bAfterGo], 2 |
1733 | @@: |
1786 | @@: |
1734 | ret |
1787 | ret |
- | 1788 | .sysenter: ; return address is [ebp-4] |
|
- | 1789 | push 0 |
|
- | 1790 | push 69 |
|
- | 1791 | pop eax |
|
- | 1792 | inc edx ; read 4 bytes |
|
- | 1793 | mov esi, [_ebp] |
|
- | 1794 | sub esi, 4 |
|
- | 1795 | mcall |
|
- | 1796 | cmp eax, edx |
|
- | 1797 | pop eax |
|
- | 1798 | jnz .syscall |
|
- | 1799 | push eax |
|
- | 1800 | and byte [_eflags+1], not 1 |
|
- | 1801 | call set_context |
|
- | 1802 | pop eax |
|
- | 1803 | jmp @f |
|
1735 | .syscall_enter: |
1804 | .syscall: |
1736 | and byte [_eflags+1], not 1 ; clear TF - avoid system halt (!) |
1805 | and byte [_eflags+1], not 1 ; clear TF - avoid system halt (!) |
1737 | call set_context |
1806 | call set_context |
1738 | .int: |
1807 | .int: |
1739 | mov eax, [_eip] |
1808 | mov eax, [_eip] |
1740 | inc eax |
1809 | inc eax |
1741 | inc eax |
1810 | inc eax |
- | 1811 | @@: |
|
1742 | push eax |
1812 | push eax |
1743 | call find_enabled_breakpoint |
1813 | call find_enabled_breakpoint |
1744 | pop eax |
1814 | pop eax |
1745 | jz .doit |
1815 | jz .doit |
1746 | ; there is no enabled breakpoint yet; set temporary breakpoint |
1816 | ; there is no enabled breakpoint yet; set temporary breakpoint |
Line 1988... | Line 2058... | ||
1988 | call find_reg |
2058 | call find_reg |
1989 | jc .regnotfound |
2059 | jc .regnotfound |
1990 | mov al, token_reg |
2060 | mov al, token_reg |
1991 | ret |
2061 | ret |
1992 | .regnotfound: |
2062 | .regnotfound: |
- | 2063 | ; test for symbol |
|
- | 2064 | push esi |
|
- | 2065 | @@: |
|
- | 2066 | lodsb |
|
- | 2067 | cmp al, ' ' |
|
- | 2068 | ja @b |
|
- | 2069 | push eax |
|
- | 2070 | mov byte [esi], 0 |
|
- | 2071 | xchg esi, [esp+4] |
|
- | 2072 | call find_symbol_name |
|
- | 2073 | mov edi, eax |
|
- | 2074 | pop eax |
|
- | 2075 | xchg esi, [esp] |
|
- | 2076 | mov byte [esi], al |
|
- | 2077 | jc @f |
|
- | 2078 | add esp, 4 |
|
- | 2079 | mov al, token_hex |
|
- | 2080 | ret |
|
- | 2081 | @@: |
|
- | 2082 | pop esi |
|
1993 | ; test for hex number |
2083 | ; test for hex number |
1994 | xor ecx, ecx |
2084 | xor ecx, ecx |
1995 | xor edi, edi |
2085 | xor edi, edi |
1996 | xor eax, eax |
2086 | xor eax, eax |
1997 | @@: |
2087 | @@: |
Line 2180... | Line 2270... | ||
2180 | cmp byte [esi], 0 |
2270 | cmp byte [esi], 0 |
2181 | jnz .param |
2271 | jnz .param |
2182 | mov eax, [disasm_start_pos] |
2272 | mov eax, [disasm_start_pos] |
2183 | mov ecx, disasm_height |
2273 | mov ecx, disasm_height |
2184 | mov [disasm_cur_pos], eax |
2274 | mov [disasm_cur_pos], eax |
- | 2275 | .l: |
|
- | 2276 | mov eax, [disasm_cur_pos] |
|
- | 2277 | call find_symbol |
|
- | 2278 | jc @f |
|
- | 2279 | dec ecx |
|
- | 2280 | jz .m |
|
2185 | @@: |
2281 | @@: |
2186 | push ecx |
2282 | push ecx |
2187 | call disasm_instr |
2283 | call disasm_instr |
2188 | pop ecx |
2284 | pop ecx |
2189 | jc .err |
2285 | jc .err |
2190 | loop @b |
2286 | loop .l |
- | 2287 | .m: |
|
2191 | mov eax, [disasm_cur_pos] |
2288 | mov eax, [disasm_cur_pos] |
2192 | jmp .doit |
2289 | jmp .doit |
2193 | .param: |
2290 | .param: |
2194 | call calc_expression |
2291 | call calc_expression |
2195 | jc .ret |
2292 | jc .ret |
Line 2801... | Line 2898... | ||
2801 | jmp .wait |
2898 | jmp .wait |
2802 | .done: |
2899 | .done: |
2803 | mov esi, aUnpacked |
2900 | mov esi, aUnpacked |
2804 | jmp .x1 |
2901 | jmp .x1 |
Line -... | Line 2902... | ||
- | 2902 | ||
- | 2903 | include 'sort.inc' |
|
- | 2904 | compare: |
|
- | 2905 | cmpsd |
|
- | 2906 | jnz @f |
|
- | 2907 | cmp esi, edi |
|
- | 2908 | @@: ret |
|
- | 2909 | compare2: |
|
- | 2910 | cmpsd |
|
- | 2911 | @@: |
|
- | 2912 | cmpsb |
|
- | 2913 | jnz @f |
|
- | 2914 | cmp byte [esi], 0 |
|
- | 2915 | jnz @b |
|
- | 2916 | cmp esi, edi |
|
- | 2917 | @@: |
|
- | 2918 | ret |
|
- | 2919 | ||
- | 2920 | free_symbols: |
|
- | 2921 | mov ecx, [symbols] |
|
- | 2922 | jecxz @f |
|
- | 2923 | mcall 68, 13 |
|
- | 2924 | and [symbols], 0 |
|
- | 2925 | and [num_symbols], 0 |
|
- | 2926 | @@: |
|
- | 2927 | ret |
|
- | 2928 | ||
- | 2929 | OnLoadSymbols.fileerr: |
|
- | 2930 | test ebp, ebp |
|
- | 2931 | jz @f |
|
- | 2932 | mcall 68, 13, edi |
|
- | 2933 | ret |
|
- | 2934 | @@: |
|
- | 2935 | push eax |
|
- | 2936 | mcall 68, 13, edi |
|
- | 2937 | mov esi, aCannotLoadFile |
|
- | 2938 | call put_message_nodraw |
|
- | 2939 | pop eax |
|
- | 2940 | cmp eax, 0x20 |
|
- | 2941 | jae .unk |
|
- | 2942 | mov esi, [load_err_msgs + eax*4] |
|
- | 2943 | test esi, esi |
|
- | 2944 | jnz put_message |
|
- | 2945 | .unk: |
|
- | 2946 | mov esi, unk_err_msg2 |
|
- | 2947 | jmp put_message |
|
- | 2948 | ||
- | 2949 | OnLoadSymbols: |
|
- | 2950 | xor ebp, ebp |
|
- | 2951 | ; load input file |
|
- | 2952 | mov esi, [curarg] |
|
- | 2953 | call free_symbols |
|
- | 2954 | .silent: |
|
- | 2955 | xor edi, edi |
|
- | 2956 | cmp [num_symbols], edi |
|
- | 2957 | jz @f |
|
- | 2958 | ret |
|
- | 2959 | @@: |
|
- | 2960 | mov ebx, fn70_attr_block |
|
- | 2961 | mov [ebx+21], esi |
|
- | 2962 | mcall 70 |
|
- | 2963 | test eax, eax |
|
- | 2964 | jnz .fileerr |
|
- | 2965 | cmp dword [fileattr+36], edi |
|
- | 2966 | jnz .memerr |
|
- | 2967 | mov ecx, dword [fileattr+32] |
|
- | 2968 | mcall 68, 12 |
|
- | 2969 | test eax, eax |
|
- | 2970 | jz .memerr |
|
- | 2971 | mov edi, eax |
|
- | 2972 | mov ebx, fn70_read_block |
|
- | 2973 | mov [ebx+12], ecx |
|
- | 2974 | mov [ebx+16], edi |
|
- | 2975 | mov [ebx+21], esi |
|
- | 2976 | mcall 70 |
|
- | 2977 | test eax, eax |
|
- | 2978 | jnz .fileerr |
|
- | 2979 | ; calculate memory requirements |
|
- | 2980 | lea edx, [ecx+edi-1] ; edx = EOF-1 |
|
- | 2981 | mov esi, edi |
|
- | 2982 | xor ecx, ecx |
|
- | 2983 | .calcloop: |
|
- | 2984 | cmp esi, edx |
|
- | 2985 | jae .calcdone |
|
- | 2986 | cmp word [esi], '0x' |
|
- | 2987 | jnz .skipline |
|
- | 2988 | inc esi |
|
- | 2989 | inc esi |
|
- | 2990 | @@: |
|
- | 2991 | cmp esi, edx |
|
- | 2992 | jae .calcdone |
|
- | 2993 | lodsb |
|
- | 2994 | or al, 20h |
|
- | 2995 | sub al, '0' |
|
- | 2996 | cmp al, 9 |
|
- | 2997 | jbe @b |
|
- | 2998 | sub al, 'a'-'0'-10 |
|
- | 2999 | cmp al, 15 |
|
- | 3000 | jbe @b |
|
- | 3001 | dec esi |
|
- | 3002 | @@: |
|
- | 3003 | cmp esi, edx |
|
- | 3004 | ja .calcdone |
|
- | 3005 | lodsb |
|
- | 3006 | cmp al, 20h |
|
- | 3007 | jz @b |
|
- | 3008 | jb .calcloop |
|
- | 3009 | cmp al, 9 |
|
- | 3010 | jz @b |
|
- | 3011 | add ecx, 12+1 |
|
- | 3012 | inc [num_symbols] |
|
- | 3013 | @@: |
|
- | 3014 | inc ecx |
|
- | 3015 | cmp esi, edx |
|
- | 3016 | ja .calcdone |
|
- | 3017 | lodsb |
|
- | 3018 | cmp al, 0xD |
|
- | 3019 | jz .calcloop |
|
- | 3020 | cmp al, 0xA |
|
- | 3021 | jz .calcloop |
|
- | 3022 | jmp @b |
|
- | 3023 | .skipline: |
|
- | 3024 | cmp esi, edx |
|
- | 3025 | jae .calcdone |
|
- | 3026 | lodsb |
|
- | 3027 | cmp al, 0xD |
|
- | 3028 | jz .calcloop |
|
- | 3029 | cmp al, 0xA |
|
- | 3030 | jz .calcloop |
|
- | 3031 | jmp .skipline |
|
- | 3032 | .calcdone: |
|
- | 3033 | mcall 68, 12 |
|
- | 3034 | test eax, eax |
|
- | 3035 | jnz .memok |
|
- | 3036 | inc ebx |
|
- | 3037 | mov ecx, edi |
|
- | 3038 | mov al, 68 |
|
- | 3039 | mcall |
|
- | 3040 | .memerr: |
|
- | 3041 | mov esi, aNoMemory |
|
- | 3042 | jmp put_message |
|
- | 3043 | .memok: |
|
- | 3044 | mov [symbols], eax |
|
- | 3045 | mov ebx, eax |
|
- | 3046 | push edi |
|
- | 3047 | mov esi, edi |
|
- | 3048 | mov edi, [num_symbols] |
|
- | 3049 | lea ebp, [eax+edi*4] |
|
- | 3050 | lea edi, [eax+edi*8] |
|
- | 3051 | ; parse input data, esi->input, edx->EOF, ebx->ptrs, edi->names |
|
- | 3052 | .readloop: |
|
- | 3053 | cmp esi, edx |
|
- | 3054 | jae .readdone |
|
- | 3055 | cmp word [esi], '0x' |
|
- | 3056 | jnz .readline |
|
- | 3057 | inc esi |
|
- | 3058 | inc esi |
|
- | 3059 | xor eax, eax |
|
- | 3060 | xor ecx, ecx |
|
- | 3061 | @@: |
|
- | 3062 | shl ecx, 4 |
|
- | 3063 | add ecx, eax |
|
- | 3064 | cmp esi, edx |
|
- | 3065 | jae .readdone |
|
- | 3066 | lodsb |
|
- | 3067 | or al, 20h |
|
- | 3068 | sub al, '0' |
|
- | 3069 | cmp al, 9 |
|
- | 3070 | jbe @b |
|
- | 3071 | sub al, 'a'-'0'-10 |
|
- | 3072 | cmp al, 15 |
|
- | 3073 | jbe @b |
|
- | 3074 | dec esi |
|
- | 3075 | @@: |
|
- | 3076 | cmp esi, edx |
|
- | 3077 | ja .readdone |
|
- | 3078 | lodsb |
|
- | 3079 | cmp al, 20h |
|
- | 3080 | jz @b |
|
- | 3081 | jb .readloop |
|
- | 3082 | cmp al, 9 |
|
- | 3083 | jz @b |
|
- | 3084 | mov dword [ebx], edi |
|
- | 3085 | add ebx, 4 |
|
- | 3086 | mov dword [ebp], edi |
|
- | 3087 | add ebp, 4 |
|
- | 3088 | mov dword [edi], ecx |
|
- | 3089 | add edi, 4 |
|
- | 3090 | stosb |
|
- | 3091 | @@: |
|
- | 3092 | xor eax, eax |
|
- | 3093 | stosb |
|
- | 3094 | cmp esi, edx |
|
- | 3095 | ja .readdone |
|
- | 3096 | lodsb |
|
- | 3097 | cmp al, 0xD |
|
- | 3098 | jz .readloop |
|
- | 3099 | cmp al, 0xA |
|
- | 3100 | jz .readloop |
|
- | 3101 | mov byte [edi-1], al |
|
- | 3102 | jmp @b |
|
- | 3103 | .readline: |
|
- | 3104 | cmp esi, edx |
|
- | 3105 | jae .readdone |
|
- | 3106 | lodsb |
|
- | 3107 | cmp al, 0xD |
|
- | 3108 | jz .readloop |
|
- | 3109 | cmp al, 0xA |
|
- | 3110 | jz .readloop |
|
- | 3111 | jmp .readline |
|
- | 3112 | .readdone: |
|
- | 3113 | pop ecx |
|
- | 3114 | mcall 68, 13 |
|
- | 3115 | mov ecx, [num_symbols] |
|
- | 3116 | mov edx, [symbols] |
|
- | 3117 | mov ebx, compare |
|
- | 3118 | call sort |
|
- | 3119 | mov ecx, [num_symbols] |
|
- | 3120 | lea edx, [edx+ecx*4] |
|
- | 3121 | mov ebx, compare2 |
|
- | 3122 | call sort |
|
- | 3123 | mov esi, aSymbolsLoaded |
|
- | 3124 | call put_message |
|
- | 3125 | jmp redraw_disasm |
|
- | 3126 | ||
- | 3127 | find_symbol: |
|
- | 3128 | ; in: eax=address |
|
- | 3129 | ; out: esi, CF |
|
- | 3130 | cmp [num_symbols], 0 |
|
- | 3131 | jnz @f |
|
- | 3132 | .ret0: |
|
- | 3133 | xor esi, esi |
|
- | 3134 | stc |
|
- | 3135 | ret |
|
- | 3136 | @@: |
|
- | 3137 | push ebx ecx edx |
|
- | 3138 | xor edx, edx |
|
- | 3139 | mov esi, [symbols] |
|
- | 3140 | mov ecx, [num_symbols] |
|
- | 3141 | mov ebx, [esi] |
|
- | 3142 | cmp [ebx], eax |
|
- | 3143 | jz .donez |
|
- | 3144 | jb @f |
|
- | 3145 | pop edx ecx ebx |
|
- | 3146 | jmp .ret0 |
|
- | 3147 | @@: |
|
- | 3148 | ; invariant: symbols_addr[edx] < eax < symbols_addr[ecx] |
|
- | 3149 | .0: |
|
- | 3150 | push edx |
|
- | 3151 | .1: |
|
- | 3152 | add edx, ecx |
|
- | 3153 | sar edx, 1 |
|
- | 3154 | cmp edx, [esp] |
|
- | 3155 | jz .done2 |
|
- | 3156 | mov ebx, [esi+edx*4] |
|
- | 3157 | cmp [ebx], eax |
|
- | 3158 | jz .done |
|
- | 3159 | ja .2 |
|
- | 3160 | mov [esp], edx |
|
- | 3161 | jmp .1 |
|
- | 3162 | .2: |
|
- | 3163 | mov ecx, edx |
|
- | 3164 | pop edx |
|
- | 3165 | jmp .0 |
|
- | 3166 | .donecont: |
|
- | 3167 | dec edx |
|
- | 3168 | .done: |
|
- | 3169 | test edx, edx |
|
- | 3170 | jz @f |
|
- | 3171 | mov ebx, [esi+edx*4-4] |
|
- | 3172 | cmp [ebx], eax |
|
- | 3173 | jz .donecont |
|
- | 3174 | @@: |
|
- | 3175 | pop ecx |
|
- | 3176 | .donez: |
|
- | 3177 | mov esi, [esi+edx*4] |
|
- | 3178 | add esi, 4 |
|
- | 3179 | pop edx ecx ebx |
|
- | 3180 | clc |
|
- | 3181 | ret |
|
- | 3182 | .done2: |
|
- | 3183 | lea esi, [esi+edx*4] |
|
- | 3184 | pop ecx edx ecx ebx |
|
- | 3185 | stc |
|
- | 3186 | ret |
|
- | 3187 | ||
- | 3188 | find_symbol_name: |
|
- | 3189 | ; in: esi->name |
|
- | 3190 | ; out: if found: CF clear, eax=value |
|
- | 3191 | ; otherwise CF set |
|
- | 3192 | cmp [num_symbols], 0 |
|
- | 3193 | jnz @f |
|
- | 3194 | .stc_ret: |
|
- | 3195 | stc |
|
- | 3196 | ret |
|
- | 3197 | @@: |
|
- | 3198 | push ebx ecx edx edi |
|
- | 3199 | push -1 |
|
- | 3200 | pop edx |
|
- | 3201 | mov ebx, [symbols] |
|
- | 3202 | mov ecx, [num_symbols] |
|
- | 3203 | lea ebx, [ebx+ecx*4] |
|
- | 3204 | ; invariant: symbols_name[edx] < name < symbols_name[ecx] |
|
- | 3205 | .0: |
|
- | 3206 | push edx |
|
- | 3207 | .1: |
|
- | 3208 | add edx, ecx |
|
- | 3209 | sar edx, 1 |
|
- | 3210 | cmp edx, [esp] |
|
- | 3211 | jz .done2 |
|
- | 3212 | call .cmp |
|
- | 3213 | jz .done |
|
- | 3214 | jb .2 |
|
- | 3215 | mov [esp], edx |
|
- | 3216 | jmp .1 |
|
- | 3217 | .2: |
|
- | 3218 | mov ecx, edx |
|
- | 3219 | pop edx |
|
- | 3220 | jmp .0 |
|
- | 3221 | .done: |
|
- | 3222 | pop ecx |
|
- | 3223 | .donez: |
|
- | 3224 | mov eax, [ebx+edx*4] |
|
- | 3225 | mov eax, [eax] |
|
- | 3226 | pop edi edx ecx ebx |
|
- | 3227 | clc |
|
- | 3228 | ret |
|
- | 3229 | .done2: |
|
- | 3230 | pop edx edi edx ecx ebx |
|
- | 3231 | stc |
|
- | 3232 | ret |
|
- | 3233 | ||
- | 3234 | .cmp: |
|
- | 3235 | mov edi, [ebx+edx*4] |
|
- | 3236 | push esi |
|
- | 3237 | add edi, 4 |
|
- | 3238 | @@: |
|
- | 3239 | cmpsb |
|
- | 3240 | jnz @f |
|
- | 3241 | cmp byte [esi-1], 0 |
|
- | 3242 | jnz @b |
|
- | 3243 | @@: |
|
- | 3244 | pop esi |
|
- | 3245 | ret |
|
- | 3246 | ||
- | 3247 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
|
- | 3248 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; DISASSEMBLER ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
|
- | 3249 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
|
2805 | 3250 | ||
2806 | disasm_get_byte: |
3251 | disasm_get_byte: |
2807 | ; out: al=byte |
3252 | ; out: al=byte |
2808 | push ecx |
3253 | push ecx |
2809 | mov ecx, [disasm_cur_pos] |
3254 | mov ecx, [disasm_cur_pos] |
Line 2867... | Line 3312... | ||
2867 | csegds: |
3312 | csegds: |
2868 | cseges: |
3313 | cseges: |
2869 | csegss: |
3314 | csegss: |
2870 | csegfs: |
3315 | csegfs: |
2871 | cseggs: |
3316 | cseggs: |
- | 3317 | mov esi, cmd1 |
|
2872 | call @f |
3318 | iglobal |
- | 3319 | cmd1: |
|
2873 | db 0x2E,3,'cs:' |
3320 | db 0x2E,3,'cs:' |
2874 | db 0x36,3,'ss:' |
3321 | db 0x36,3,'ss:' |
2875 | db 0x3E,3,'ds:' |
3322 | db 0x3E,3,'ds:' |
2876 | db 0x26,3,'es:' |
3323 | db 0x26,3,'es:' |
2877 | db 0x64,3,'fs:' |
3324 | db 0x64,3,'fs:' |
Line 2916... | Line 3363... | ||
2916 | db 0xF9,3,'stc' |
3363 | db 0xF9,3,'stc' |
2917 | db 0xFA,3,'cli' |
3364 | db 0xFA,3,'cli' |
2918 | db 0xFB,3,'sti' |
3365 | db 0xFB,3,'sti' |
2919 | db 0xFC,3,'cld' |
3366 | db 0xFC,3,'cld' |
2920 | db 0xFD,3,'std' |
3367 | db 0xFD,3,'std' |
2921 | csysenter: |
- | |
2922 | csyscall: |
- | |
2923 | ccpuid: |
- | |
2924 | crdtsc: |
3368 | cmd2: |
2925 | call @f |
- | |
2926 | db 0x05,7,'syscall' |
3369 | db 0x05,7,'syscall' |
2927 | db 0x31,5,'rdtsc' |
3370 | db 0x31,5,'rdtsc' |
2928 | db 0x34,8,'sysenter' |
3371 | db 0x34,8,'sysenter' |
2929 | db 0xA2,5,'cpuid' |
3372 | db 0xA2,5,'cpuid' |
- | 3373 | db 0x77,4,'emms' |
|
2930 | @@: |
3374 | endg |
2931 | pop esi |
3375 | jmp @f |
- | 3376 | csysenter: |
|
- | 3377 | csyscall: |
|
- | 3378 | ccpuid: |
|
- | 3379 | crdtsc: |
|
- | 3380 | cemms: |
|
- | 3381 | mov esi, cmd2 |
|
2932 | @@: |
3382 | @@: |
2933 | cmp al, [esi] |
3383 | cmp al, [esi] |
2934 | jz .found |
3384 | jz .found |
2935 | inc esi |
3385 | inc esi |
2936 | movzx edx, byte [esi] |
3386 | movzx edx, byte [esi] |
Line 3032... | Line 3482... | ||
3032 | stosd |
3482 | stosd |
3033 | xor eax, eax |
3483 | xor eax, eax |
3034 | jmp cmov2.2 |
3484 | jmp cmov2.2 |
Line 3035... | Line 3485... | ||
3035 | 3485 | ||
- | 3486 | disasm_write_num: |
|
- | 3487 | push esi |
|
- | 3488 | cmp eax, 0x80 |
|
- | 3489 | jl .nosymb |
|
- | 3490 | lea esi, [eax-1] |
|
- | 3491 | test eax, esi |
|
- | 3492 | jz .nosymb |
|
- | 3493 | call find_symbol |
|
- | 3494 | jc .nosymb |
|
- | 3495 | @@: |
|
- | 3496 | lodsb |
|
- | 3497 | test al, al |
|
- | 3498 | jz @f |
|
- | 3499 | stosb |
|
- | 3500 | jmp @b |
|
- | 3501 | @@: |
|
- | 3502 | pop esi |
|
- | 3503 | ret |
|
- | 3504 | .nosymb: |
|
3036 | disasm_write_num: |
3505 | pop esi |
3037 | push ecx eax |
3506 | push ecx eax |
3038 | inc edi |
3507 | inc edi |
3039 | @@: |
3508 | @@: |
3040 | mov ecx, eax |
3509 | mov ecx, eax |
Line 3070... | Line 3539... | ||
3070 | mov byte [edi], 'h' |
3539 | mov byte [edi], 'h' |
3071 | inc edi |
3540 | inc edi |
3072 | @@: |
3541 | @@: |
3073 | ret |
3542 | ret |
Line -... | Line 3543... | ||
- | 3543 | ||
3074 | 3544 | iglobal |
|
3075 | label disasm_regs32 dword |
3545 | label disasm_regs32 dword |
3076 | label disasm_regs dword |
3546 | label disasm_regs dword |
3077 | db 'eax',0 |
3547 | db 'eax',0 |
3078 | db 'ecx',0 |
3548 | db 'ecx',0 |
Line 3083... | Line 3553... | ||
3083 | db 'esi',0 |
3553 | db 'esi',0 |
3084 | db 'edi',0 |
3554 | db 'edi',0 |
3085 | disasm_regs16 dw 'ax','cx','dx','bx','sp','bp','si','di' |
3555 | disasm_regs16 dw 'ax','cx','dx','bx','sp','bp','si','di' |
3086 | disasm_regs8 dw 'al','cl','dl','bl','ah','ch','dh','bh' |
3556 | disasm_regs8 dw 'al','cl','dl','bl','ah','ch','dh','bh' |
3087 | disasm_scale db '1248' |
3557 | disasm_scale db '1248' |
- | 3558 | endg |
|
3088 | disasm_readrmop: |
3559 | disasm_readrmop: |
3089 | call disasm_get_byte |
3560 | call disasm_get_byte |
3090 | test ch, 40h |
3561 | test ch, 40h |
3091 | jnz .skip_size |
3562 | jnz .skip_size |
3092 | push eax |
3563 | push eax |
Line 3154... | Line 3625... | ||
3154 | jns .2 |
3625 | jns .2 |
3155 | neg eax |
3626 | neg eax |
3156 | mov byte [edi-1], '-' |
3627 | mov byte [edi-1], '-' |
3157 | .2: |
3628 | .2: |
3158 | call disasm_write_num |
3629 | call disasm_write_num |
- | 3630 | .2a: |
|
3159 | mov al, ']' |
3631 | mov al, ']' |
3160 | stosb |
3632 | stosb |
3161 | pop ecx |
3633 | pop ecx |
3162 | ret |
3634 | ret |
3163 | .vmod3: |
3635 | .vmod3: |
3164 | pop ecx |
3636 | pop ecx |
- | 3637 | test ch, 10h |
|
- | 3638 | jnz .vmod3_mmi |
|
3165 | test ch, 80h |
3639 | test ch, 80h |
3166 | jz .vmod3_byte |
3640 | jz .vmod3_byte |
3167 | test ch, 1 |
3641 | test ch, 1 |
3168 | jnz .vmod3_word |
3642 | jnz .vmod3_word |
3169 | test ch, 20h |
3643 | test ch, 20h |
Line 3184... | Line 3658... | ||
3184 | mov word [edi], 'st' |
3658 | mov word [edi], 'st' |
3185 | add al, '0' |
3659 | add al, '0' |
3186 | mov byte [edi+2], al |
3660 | mov byte [edi+2], al |
3187 | add edi, 3 |
3661 | add edi, 3 |
3188 | ret |
3662 | ret |
- | 3663 | .vmod3_mmi: |
|
- | 3664 | disasm_write_mmreg = $ |
|
- | 3665 | test ch, 1 |
|
- | 3666 | jz @f |
|
- | 3667 | mov byte [edi], 'x' |
|
- | 3668 | inc edi |
|
- | 3669 | @@: |
|
- | 3670 | mov word [edi], 'mm' |
|
- | 3671 | add al, '0' |
|
- | 3672 | mov byte [edi+2], al |
|
- | 3673 | add edi, 3 |
|
- | 3674 | ret |
|
3189 | .vmod0: |
3675 | .vmod0: |
3190 | mov byte [edi], '[' |
3676 | mov byte [edi], '[' |
3191 | inc edi |
3677 | inc edi |
3192 | cmp al, 4 |
3678 | cmp al, 4 |
3193 | jz .sib2 |
3679 | jz .sib2 |
Line 3260... | Line 3746... | ||
3260 | call disasm_write_num |
3746 | call disasm_write_num |
3261 | .sibret2: |
3747 | .sibret2: |
3262 | pop edx |
3748 | pop edx |
3263 | ret |
3749 | ret |
Line -... | Line 3750... | ||
- | 3750 | ||
3264 | 3751 | iglobal |
|
3265 | disasm_rm16_1 dd 'bxsi','bxdi','bpsi','bpdi' |
3752 | disasm_rm16_1 dd 'bxsi','bxdi','bpsi','bpdi' |
- | 3753 | disasm_rm16_2 dw 'si','di','bp','bx' |
|
3266 | disasm_rm16_2 dw 'si','di','bp','bx' |
3754 | endg |
3267 | disasm_readrmop16: |
3755 | disasm_readrmop16: |
3268 | push ecx |
3756 | push ecx |
3269 | movzx ecx, al |
3757 | movzx ecx, al |
3270 | and eax, 7 |
3758 | and eax, 7 |
Line 3448... | Line 3936... | ||
3448 | call disasm_write_reg1632 |
3936 | call disasm_write_reg1632 |
3449 | mov ax, ', ' |
3937 | mov ax, ', ' |
3450 | stosw |
3938 | stosw |
3451 | jmp cmov2.1 |
3939 | jmp cmov2.1 |
Line -... | Line 3940... | ||
- | 3940 | ||
3452 | 3941 | iglobal |
|
- | 3942 | disasm_shifts dd 'rol ','ror ','rcl ','rcr ','shl ','shr ','sal ','sar ' |
|
3453 | disasm_shifts dd 'rol ','ror ','rcl ','rcr ','shl ','shr ','sal ','sar ' |
3943 | endg |
3454 | cshift2: |
3944 | cshift2: |
3455 | ; shift r/m,1 = D0/D1 |
3945 | ; shift r/m,1 = D0/D1 |
3456 | cshift3: |
3946 | cshift3: |
3457 | ; shift r/m,cl = D2/D3 |
3947 | ; shift r/m,cl = D2/D3 |
Line 3585... | Line 4075... | ||
3585 | or ch, 1 ; 2nd operand - 8 or 16 bits |
4075 | or ch, 1 ; 2nd operand - 8 or 16 bits |
3586 | call disasm_readrmop |
4076 | call disasm_readrmop |
3587 | and byte [edi], 0 |
4077 | and byte [edi], 0 |
3588 | ret |
4078 | ret |
Line -... | Line 4079... | ||
- | 4079 | ||
3589 | 4080 | iglobal |
|
- | 4081 | disasm_op2cmds dd 'add ','or ','adc ','sbb ','and ','sub ','xor ','cmp ' |
|
3590 | disasm_op2cmds dd 'add ','or ','adc ','sbb ','and ','sub ','xor ','cmp ' |
4082 | endg |
3591 | cop21: |
4083 | cop21: |
3592 | disasm_set_modew |
4084 | disasm_set_modew |
3593 | mov esi, 'test' |
4085 | mov esi, 'test' |
3594 | cmp al, 0A8h |
4086 | cmp al, 0A8h |
Line 3717... | Line 4209... | ||
3717 | .ic: |
4209 | .ic: |
3718 | call disasm_write_num |
4210 | call disasm_write_num |
3719 | and byte [edi], 0 |
4211 | and byte [edi], 0 |
3720 | ret |
4212 | ret |
Line -... | Line 4213... | ||
- | 4213 | ||
- | 4214 | cmovcc: |
|
- | 4215 | or ch, 0C0h |
|
- | 4216 | and eax, 0xF |
|
- | 4217 | mov ax, [disasm_jcc_codes + eax*2] |
|
- | 4218 | mov dword [edi], 'cmov' |
|
- | 4219 | add edi, 4 |
|
- | 4220 | stosw |
|
- | 4221 | mov ax, ' ' |
|
- | 4222 | stosw |
|
- | 4223 | call disasm_get_byte |
|
- | 4224 | dec [disasm_cur_pos] |
|
- | 4225 | shr eax, 3 |
|
- | 4226 | and eax, 7 |
|
- | 4227 | call disasm_write_reg1632 |
|
- | 4228 | mov ax, ', ' |
|
- | 4229 | stosw |
|
- | 4230 | call disasm_readrmop |
|
- | 4231 | and byte [edi], 0 |
|
- | 4232 | ret |
|
3721 | 4233 | ||
3722 | cbtx1: |
4234 | cbtx1: |
3723 | ; btx r/m,i8 = 0F BA |
4235 | ; btx r/m,i8 = 0F BA |
3724 | or ch, 80h |
4236 | or ch, 80h |
3725 | call disasm_get_byte |
4237 | call disasm_get_byte |
Line 3734... | Line 4246... | ||
3734 | stosd |
4246 | stosd |
3735 | call disasm_readrmop |
4247 | call disasm_readrmop |
3736 | mov ax, ', ' |
4248 | mov ax, ', ' |
3737 | stosw |
4249 | stosw |
3738 | jmp disasm_i8u |
4250 | jmp disasm_i8u |
- | 4251 | iglobal |
|
3739 | btx1codes dd 'bt ','bts ','btr ','btc ' |
4252 | btx1codes dd 'bt ','bts ','btr ','btc ' |
- | 4253 | endg |
|
3740 | cbtx2: |
4254 | cbtx2: |
3741 | ; btx r/m,r = 0F 101xx011 (A3,AB,B3,BB) |
4255 | ; btx r/m,r = 0F 101xx011 (A3,AB,B3,BB) |
3742 | shr al, 3 |
4256 | shr al, 3 |
3743 | and eax, 3 |
4257 | and eax, 3 |
3744 | mov eax, [btx1codes+eax*4] |
4258 | mov eax, [btx1codes+eax*4] |
Line 3770... | Line 4284... | ||
3770 | stosb |
4284 | stosb |
3771 | call disasm_readrmop |
4285 | call disasm_readrmop |
3772 | and byte [edi], 0 |
4286 | and byte [edi], 0 |
3773 | ret |
4287 | ret |
Line -... | Line 4288... | ||
- | 4288 | ||
3774 | 4289 | iglobal |
|
- | 4290 | disasm_jcc_codes dw 'o ','no','b ','ae','z ','nz','be','a ','s ','ns','p ','np','l ','ge','le','g ' |
|
3775 | disasm_jcc_codes dw 'o ','no','b ','ae','z ','nz','be','a ','s ','ns','p ','np','l ','ge','le','g ' |
4291 | endg |
3776 | cjcc1: |
4292 | cjcc1: |
3777 | cjmp2: |
4293 | cjmp2: |
3778 | cmp al, 0xEB |
4294 | cmp al, 0xEB |
3779 | jz .1 |
4295 | jz .1 |
Line 3817... | Line 4333... | ||
3817 | mov eax, ' ' |
4333 | mov eax, ' ' |
3818 | stosd |
4334 | stosd |
3819 | call disasm_get_dword |
4335 | call disasm_get_dword |
3820 | jmp disasm_rva |
4336 | jmp disasm_rva |
Line -... | Line 4337... | ||
- | 4337 | ||
3821 | 4338 | iglobal |
|
3822 | op11codes dd 'test',0,'not ','neg ','mul ','imul','div ','idiv' |
4339 | op11codes dd 'test',0,'not ','neg ','mul ','imul','div ','idiv' |
- | 4340 | op12codes dd 'inc ','dec ','call',0,'jmp ',0,'push',0 |
|
3823 | op12codes dd 'inc ','dec ','call',0,'jmp ',0,'push',0 |
4341 | endg |
3824 | cop1: |
4342 | cop1: |
3825 | disasm_set_modew |
4343 | disasm_set_modew |
3826 | xchg eax, edx |
4344 | xchg eax, edx |
3827 | call disasm_get_byte |
4345 | call disasm_get_byte |
Line 3993... | Line 4511... | ||
3993 | test ch, 1 |
4511 | test ch, 1 |
3994 | jnz @b |
4512 | jnz @b |
3995 | mov eax, 'cdq ' |
4513 | mov eax, 'cdq ' |
3996 | jmp @b |
4514 | jmp @b |
Line -... | Line 4515... | ||
- | 4515 | ||
3997 | 4516 | iglobal |
|
- | 4517 | fpuD8 dd 'add ','mul ','com ','comp','sub ','subr','div ','divr' |
|
Line 3998... | Line 4518... | ||
3998 | fpuD8 dd 'add ','mul ','com ','comp','sub ','subr','div ','divr' |
4518 | endg |
3999 | 4519 | ||
4000 | cD8: |
4520 | cD8: |
4001 | call disasm_get_byte |
4521 | call disasm_get_byte |
Line 4028... | Line 4548... | ||
4028 | and ch, not 1 |
4548 | and ch, not 1 |
4029 | call disasm_readrmop |
4549 | call disasm_readrmop |
4030 | and byte [edi], 0 |
4550 | and byte [edi], 0 |
4031 | ret |
4551 | ret |
Line -... | Line 4552... | ||
- | 4552 | ||
4032 | 4553 | iglobal |
|
4033 | fpuD9_2: |
4554 | fpuD9_2: |
4034 | dq 'fchs ','fabs ',0,0,'ftst ','fxam ',0,0 |
4555 | dq 'fchs ','fabs ',0,0,'ftst ','fxam ',0,0 |
4035 | db 'fld1 fldl2t fldl2e fldpi fldlg2 fldln2 fldz ' |
4556 | db 'fld1 fldl2t fldl2e fldpi fldlg2 fldln2 fldz ' |
4036 | dq 0 |
4557 | dq 0 |
4037 | db 'f2xm1 fyl2x fptan fpatan fxtract fprem1 fdecstp fincstp ' |
4558 | db 'f2xm1 fyl2x fptan fpatan fxtract fprem1 fdecstp fincstp ' |
4038 | db 'fprem fyl2xp1 fsqrt fsincos frndint fscale fsin fcos ' |
4559 | db 'fprem fyl2xp1 fsqrt fsincos frndint fscale fsin fcos ' |
- | 4560 | fpuD9_fnop db 'fnop ' |
|
4039 | fpuD9_fnop db 'fnop ' |
4561 | endg |
4040 | cD9: |
4562 | cD9: |
4041 | call disasm_get_byte |
4563 | call disasm_get_byte |
4042 | sub al, 0xC0 |
4564 | sub al, 0xC0 |
4043 | jae .l1 |
4565 | jae .l1 |
Line 4136... | Line 4658... | ||
4136 | and ch, not 1 ; 32-bit operand |
4658 | and ch, not 1 ; 32-bit operand |
4137 | call disasm_readrmop |
4659 | call disasm_readrmop |
4138 | and byte [edi], 0 |
4660 | and byte [edi], 0 |
4139 | ret |
4661 | ret |
Line -... | Line 4662... | ||
- | 4662 | ||
4140 | 4663 | iglobal |
|
- | 4664 | fpuDB dd 'ild ',0,'ist ','istp',0,'ld ',0,'stp ' |
|
4141 | fpuDB dd 'ild ',0,'ist ','istp',0,'ld ',0,'stp ' |
4665 | endg |
4142 | cDB: |
4666 | cDB: |
4143 | call disasm_get_byte |
4667 | call disasm_get_byte |
4144 | cmp al, 0xC0 |
4668 | cmp al, 0xC0 |
4145 | jae .1 |
4669 | jae .1 |
Line 4174... | Line 4698... | ||
4174 | mov eax, 'it' |
4698 | mov eax, 'it' |
4175 | stosd |
4699 | stosd |
4176 | dec edi |
4700 | dec edi |
4177 | ret ; CF cleared |
4701 | ret ; CF cleared |
Line -... | Line 4702... | ||
- | 4702 | ||
4178 | 4703 | iglobal |
|
- | 4704 | fpuDC dd 'add ','mul ',0,0,'subr','sub ','divr','div ' |
|
4179 | fpuDC dd 'add ','mul ',0,0,'subr','sub ','divr','div ' |
4705 | endg |
4180 | cDC: |
4706 | cDC: |
4181 | call disasm_get_byte |
4707 | call disasm_get_byte |
4182 | cmp al, 0xC0 |
4708 | cmp al, 0xC0 |
4183 | jae .1 |
4709 | jae .1 |
Line 4216... | Line 4742... | ||
4216 | stosd |
4742 | stosd |
4217 | mov ax, '0' |
4743 | mov ax, '0' |
4218 | stosw |
4744 | stosw |
4219 | ret ; CF cleared |
4745 | ret ; CF cleared |
Line -... | Line 4746... | ||
- | 4746 | ||
4220 | 4747 | iglobal |
|
4221 | fpuDD dd 'fld ',0,'fst ','fstp',0,0,0,0 |
4748 | fpuDD dd 'fld ',0,'fst ','fstp',0,0,0,0 |
- | 4749 | fpuDD_2 dq 'ffree ',0,'fst ','fstp ','fucom ','fucomp ',0,0 |
|
4222 | fpuDD_2 dq 'ffree ',0,'fst ','fstp ','fucom ','fucomp ',0,0 |
4750 | endg |
4223 | cDD: |
4751 | cDD: |
4224 | call disasm_get_byte |
4752 | call disasm_get_byte |
4225 | cmp al, 0xC0 |
4753 | cmp al, 0xC0 |
4226 | jae .1 |
4754 | jae .1 |
Line 4256... | Line 4784... | ||
4256 | add al, '0' |
4784 | add al, '0' |
4257 | stosb |
4785 | stosb |
4258 | and byte [edi], 0 |
4786 | and byte [edi], 0 |
4259 | ret |
4787 | ret |
Line -... | Line 4788... | ||
- | 4788 | ||
4260 | 4789 | iglobal |
|
- | 4790 | fpuDE dd 'add ','mul ',0,0,'subr','sub ','divr','div ' |
|
4261 | fpuDE dd 'add ','mul ',0,0,'subr','sub ','divr','div ' |
4791 | endg |
4262 | cDE: |
4792 | cDE: |
4263 | call disasm_get_byte |
4793 | call disasm_get_byte |
4264 | cmp al, 0xC0 |
4794 | cmp al, 0xC0 |
4265 | jae .1 |
4795 | jae .1 |
Line 4314... | Line 4844... | ||
4314 | mov ax, 'pp' |
4844 | mov ax, 'pp' |
4315 | stosw |
4845 | stosw |
4316 | and byte [edi], 0 |
4846 | and byte [edi], 0 |
4317 | ret |
4847 | ret |
Line -... | Line 4848... | ||
- | 4848 | ||
4318 | 4849 | iglobal |
|
- | 4850 | fpuDF dd 'ild ',0,'ist ','istp','bld ','ild ','bstp','istp' |
|
Line 4319... | Line 4851... | ||
4319 | fpuDF dd 'ild ',0,'ist ','istp','bld ','ild ','bstp','istp' |
4851 | endg |
4320 | 4852 | ||
4321 | cDF: |
4853 | cDF: |
4322 | call disasm_get_byte |
4854 | call disasm_get_byte |
Line 4356... | Line 4888... | ||
4356 | mov ax, 'ax' |
4888 | mov ax, 'ax' |
4357 | stosw |
4889 | stosw |
4358 | and byte [edi], 0 |
4890 | and byte [edi], 0 |
4359 | ret |
4891 | ret |
Line -... | Line 4892... | ||
- | 4892 | ||
- | 4893 | cmovd1: |
|
- | 4894 | mov eax, 'movd' |
|
- | 4895 | stosd |
|
- | 4896 | mov eax, ' ' |
|
- | 4897 | stosd |
|
- | 4898 | call disasm_get_byte |
|
- | 4899 | dec [disasm_cur_pos] |
|
- | 4900 | shr al, 3 |
|
- | 4901 | and eax, 7 |
|
- | 4902 | call disasm_write_mmreg |
|
- | 4903 | mov ax, ', ' |
|
- | 4904 | stosw |
|
- | 4905 | or ch, 0C0h |
|
- | 4906 | and ch, not 1 |
|
- | 4907 | call disasm_readrmop |
|
- | 4908 | and byte [edi], 0 |
|
- | 4909 | ret |
|
- | 4910 | cmovd2: |
|
- | 4911 | mov eax, 'movd' |
|
- | 4912 | stosd |
|
- | 4913 | mov eax, ' ' |
|
- | 4914 | stosd |
|
- | 4915 | call disasm_get_byte |
|
- | 4916 | dec [disasm_cur_pos] |
|
- | 4917 | shr al, 3 |
|
- | 4918 | and eax, 7 |
|
- | 4919 | push eax ecx |
|
- | 4920 | or ch, 0C0h |
|
- | 4921 | and ch, not 1 |
|
- | 4922 | call disasm_readrmop |
|
- | 4923 | mov ax, ', ' |
|
- | 4924 | stosw |
|
- | 4925 | pop ecx eax |
|
- | 4926 | call disasm_write_mmreg |
|
- | 4927 | and byte [edi], 0 |
|
- | 4928 | ret |
|
- | 4929 | ||
- | 4930 | cmovq1: |
|
- | 4931 | test ch, 1 |
|
- | 4932 | jz .mm |
|
- | 4933 | mov eax, 'movd' |
|
- | 4934 | stosd |
|
- | 4935 | mov eax, 'qa ' |
|
- | 4936 | stosd |
|
- | 4937 | jmp disasm_mmx1 |
|
- | 4938 | .mm: |
|
- | 4939 | mov eax, 'movq' |
|
- | 4940 | stosd |
|
- | 4941 | mov eax, ' ' |
|
- | 4942 | stosd |
|
- | 4943 | jmp disasm_mmx1 |
|
- | 4944 | cmovq2: |
|
- | 4945 | test ch, 1 |
|
- | 4946 | jz .mm |
|
- | 4947 | mov eax, 'movd' |
|
- | 4948 | stosd |
|
- | 4949 | mov eax, 'qa ' |
|
- | 4950 | stosd |
|
- | 4951 | jmp disasm_mmx3 |
|
- | 4952 | .mm: |
|
- | 4953 | mov eax, 'movq' |
|
- | 4954 | disasm_mmx2: |
|
- | 4955 | stosd |
|
- | 4956 | mov eax, ' ' |
|
- | 4957 | stosd |
|
- | 4958 | disasm_mmx3: |
|
- | 4959 | or ch, 50h |
|
- | 4960 | call disasm_get_byte |
|
- | 4961 | dec [disasm_cur_pos] |
|
- | 4962 | push eax |
|
- | 4963 | call disasm_readrmop |
|
- | 4964 | mov ax, ', ' |
|
- | 4965 | stosw |
|
- | 4966 | pop eax |
|
- | 4967 | shr al, 3 |
|
- | 4968 | and eax, 7 |
|
- | 4969 | call disasm_write_mmreg |
|
- | 4970 | and byte [edi], 0 |
|
- | 4971 | ret |
|
- | 4972 | ||
- | 4973 | iglobal |
|
- | 4974 | mmx_cmds: |
|
- | 4975 | db 0x60,'unpcklbw' |
|
- | 4976 | db 0x61,'unpcklwd' |
|
- | 4977 | db 0x62,'unpckldq' |
|
- | 4978 | db 0x63,'packsswb' |
|
- | 4979 | db 0x64,'pcmpgtb ' |
|
- | 4980 | db 0x65,'pcmpgtw ' |
|
- | 4981 | db 0x66,'pcmpgtd ' |
|
- | 4982 | db 0x67,'packuswb' |
|
- | 4983 | db 0x68,'unpckhbw' |
|
- | 4984 | db 0x69,'unpckhwd' |
|
- | 4985 | db 0x6A,'unpckhdq' |
|
- | 4986 | db 0x6B,'packssdw' |
|
- | 4987 | db 0x74,'pcmpeqb ' |
|
- | 4988 | db 0x75,'pcmpeqw ' |
|
- | 4989 | db 0x76,'pcmpeqd ' |
|
- | 4990 | db 0xD4,'paddq ' |
|
- | 4991 | db 0xD5,'pmullw ' |
|
- | 4992 | db 0xD8,'psubusb ' |
|
- | 4993 | db 0xD9,'psubusw ' |
|
- | 4994 | db 0xDA,'pminub ' |
|
- | 4995 | db 0xDB,'pand ' |
|
- | 4996 | db 0xDC,'paddusb ' |
|
- | 4997 | db 0xDD,'paddusw ' |
|
- | 4998 | db 0xDE,'pmaxub ' |
|
- | 4999 | db 0xDF,'pandn ' |
|
- | 5000 | db 0xE0,'pavgb ' |
|
- | 5001 | db 0xE3,'pavgw ' |
|
- | 5002 | db 0xE4,'pmulhuw ' |
|
- | 5003 | db 0xE5,'pmulhw ' |
|
- | 5004 | db 0xE8,'psubsb ' |
|
- | 5005 | db 0xE9,'psubsw ' |
|
- | 5006 | db 0xEA,'pminsw ' |
|
- | 5007 | db 0xEB,'por ' |
|
- | 5008 | db 0xEC,'paddsb ' |
|
- | 5009 | db 0xED,'paddsw ' |
|
- | 5010 | db 0xEE,'pmaxsw ' |
|
- | 5011 | db 0xEF,'pxor ' |
|
- | 5012 | db 0xF4,'pmuludq ' |
|
- | 5013 | db 0xF5,'pmaddwd ' |
|
- | 5014 | db 0xF6,'psadbw ' |
|
- | 5015 | db 0xF8,'psubb ' |
|
- | 5016 | db 0xF9,'psubw ' |
|
- | 5017 | db 0xFA,'psubd ' |
|
- | 5018 | db 0xFB,'psubq ' |
|
- | 5019 | db 0xFC,'paddb ' |
|
- | 5020 | db 0xFD,'paddw ' |
|
- | 5021 | db 0xFE,'paddd ' |
|
- | 5022 | endg |
|
- | 5023 | cpcmn: |
|
- | 5024 | mov esi, mmx_cmds |
|
- | 5025 | @@: |
|
- | 5026 | cmp al, [esi] |
|
- | 5027 | jz @f |
|
- | 5028 | add esi, 9 |
|
- | 5029 | jmp @b |
|
- | 5030 | @@: |
|
- | 5031 | inc esi |
|
- | 5032 | mov al, 'p' |
|
- | 5033 | cmp byte [esi], al |
|
- | 5034 | jz @f |
|
- | 5035 | stosb |
|
- | 5036 | @@: |
|
- | 5037 | movsd |
|
- | 5038 | movsd |
|
- | 5039 | cmp byte [edi-1], ' ' |
|
- | 5040 | jz @f |
|
- | 5041 | mov al, ' ' |
|
- | 5042 | stosb |
|
- | 5043 | @@: |
|
- | 5044 | ||
- | 5045 | disasm_mmx1: |
|
- | 5046 | or ch, 50h |
|
- | 5047 | call disasm_get_byte |
|
- | 5048 | dec [disasm_cur_pos] |
|
- | 5049 | shr al, 3 |
|
- | 5050 | and eax, 7 |
|
- | 5051 | call disasm_write_mmreg |
|
- | 5052 | mov ax, ', ' |
|
- | 5053 | stosw |
|
- | 5054 | call disasm_readrmop |
|
- | 5055 | and byte [edi], 0 |
|
- | 5056 | ret |
|
- | 5057 | ||
- | 5058 | cpsrlw: |
|
- | 5059 | mov eax, 'psrl' |
|
- | 5060 | jmp @f |
|
- | 5061 | cpsraw: |
|
- | 5062 | mov eax, 'psra' |
|
- | 5063 | jmp @f |
|
- | 5064 | cpsllw: |
|
- | 5065 | mov eax, 'psll' |
|
- | 5066 | @@: |
|
- | 5067 | stosd |
|
- | 5068 | mov eax, 'w ' |
|
- | 5069 | stosd |
|
- | 5070 | jmp disasm_mmx1 |
|
- | 5071 | cpsrld: |
|
- | 5072 | mov eax, 'psrl' |
|
- | 5073 | jmp @f |
|
- | 5074 | cpsrad: |
|
- | 5075 | mov eax, 'psra' |
|
- | 5076 | jmp @f |
|
- | 5077 | cpslld: |
|
- | 5078 | mov eax, 'psll' |
|
- | 5079 | @@: |
|
- | 5080 | stosd |
|
- | 5081 | mov eax, 'd ' |
|
- | 5082 | stosd |
|
- | 5083 | jmp disasm_mmx1 |
|
- | 5084 | cpsrlq: |
|
- | 5085 | mov eax, 'psrl' |
|
- | 5086 | jmp @f |
|
- | 5087 | cpsllq: |
|
- | 5088 | mov eax, 'psll' |
|
- | 5089 | @@: |
|
- | 5090 | stosd |
|
- | 5091 | mov eax, 'q ' |
|
- | 5092 | stosd |
|
- | 5093 | jmp disasm_mmx1 |
|
- | 5094 | ||
- | 5095 | cpshift: |
|
- | 5096 | mov dl, al |
|
- | 5097 | mov ax, 'ps' |
|
- | 5098 | stosw |
|
- | 5099 | call disasm_get_byte |
|
- | 5100 | push eax |
|
- | 5101 | and al, 0xC0 |
|
- | 5102 | cmp al, 0xC0 |
|
- | 5103 | jnz .pop_cunk |
|
- | 5104 | pop eax |
|
- | 5105 | push eax |
|
- | 5106 | shr al, 3 |
|
- | 5107 | and eax, 7 |
|
- | 5108 | cmp al, 2 |
|
- | 5109 | jz .rl |
|
- | 5110 | cmp al, 4 |
|
- | 5111 | jz .ra |
|
- | 5112 | cmp al, 6 |
|
- | 5113 | jz .ll |
|
- | 5114 | .pop_cunk: |
|
- | 5115 | pop eax |
|
- | 5116 | jmp cunk |
|
- | 5117 | .ll: |
|
- | 5118 | mov ax, 'll' |
|
- | 5119 | jmp @f |
|
- | 5120 | .rl: |
|
- | 5121 | mov ax, 'rl' |
|
- | 5122 | jmp @f |
|
- | 5123 | .ra: |
|
- | 5124 | cmp dl, 0x73 |
|
- | 5125 | jz .pop_cunk |
|
- | 5126 | mov ax, 'ra' |
|
- | 5127 | @@: |
|
- | 5128 | stosw |
|
- | 5129 | mov al, 'w' |
|
- | 5130 | cmp dl, 0x71 |
|
- | 5131 | jz @f |
|
- | 5132 | mov al, 'd' |
|
- | 5133 | cmp dl, 0x72 |
|
- | 5134 | jz @f |
|
- | 5135 | mov al, 'q' |
|
- | 5136 | @@: |
|
- | 5137 | stosb |
|
- | 5138 | mov ax, ' ' |
|
- | 5139 | stosw |
|
- | 5140 | stosb |
|
- | 5141 | pop eax |
|
- | 5142 | and eax, 7 |
|
- | 5143 | call disasm_write_mmreg |
|
- | 5144 | mov ax, ', ' |
|
- | 5145 | stosw |
|
- | 5146 | xor eax, eax |
|
- | 5147 | call disasm_get_byte |
|
- | 5148 | call disasm_write_num |
|
- | 5149 | and byte [edi], 0 |
|
- | 5150 | ret |
|
4360 | 5151 | ||
4361 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
5152 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
4362 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; DATA ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
5153 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; DATA ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
Line 4363... | Line 5154... | ||
4363 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
5154 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
4364 | 5155 | ||
4365 | caption_str db 'Kolibri Debugger',0 |
5156 | caption_str db 'Kolibri Debugger',0 |
4366 | caption_len = $ - caption_str |
5157 | caption_len = $ - caption_str |
4367 | begin_str db 'Kolibri Debugger, version 0.2',10 |
5158 | begin_str db 'Kolibri Debugger, version 0.3',10 |
4368 | db 'Hint: type "help" for help, "quit" for quit' |
5159 | db 'Hint: type "help" for help, "quit" for quit' |
Line 4369... | Line 5160... | ||
4369 | newline db 10,0 |
5160 | newline db 10,0 |
Line 4430... | Line 5221... | ||
4430 | db 0Ah |
5221 | db 0Ah |
4431 | dd aReg, OnReg, RSyntax, RHelp |
5222 | dd aReg, OnReg, RSyntax, RHelp |
4432 | db 0Ah |
5223 | db 0Ah |
4433 | dd aUnpack, OnUnpack, UnpackSyntax, UnpackHelp |
5224 | dd aUnpack, OnUnpack, UnpackSyntax, UnpackHelp |
4434 | db 9 |
5225 | db 9 |
- | 5226 | dd aLoadSymbols, OnLoadSymbols, LoadSymbolsSyntax, LoadSymbolsHelp |
|
- | 5227 | db 0Ah |
|
4435 | dd 0 |
5228 | dd 0 |
4436 | aHelp db 5,'help',0 |
5229 | aHelp db 5,'help',0 |
4437 | _aH db 2,'h',0 |
5230 | _aH db 2,'h',0 |
4438 | HelpHelp db 'Help on specified function',10 |
5231 | HelpHelp db 'Help on specified function',10 |
4439 | HelpSyntax db 'Usage: h or help [group | command]',10,0 |
5232 | HelpSyntax db 'Usage: h or help [group | command]',10,0 |
Line 4446... | Line 5239... | ||
4446 | help_control_msg db 'List of control commands:',10 |
5239 | help_control_msg db 'List of control commands:',10 |
4447 | db 'h = help - help',10 |
5240 | db 'h = help - help',10 |
4448 | db 'quit - exit from debugger',10 |
5241 | db 'quit - exit from debugger',10 |
4449 | db 'load |
5242 | db 'load |
4450 | db 'reload - reload debugging program',10 |
5243 | db 'reload - reload debugging program',10 |
- | 5244 | db 'load-symbols |
|
4451 | db 'terminate - terminate loaded program',10 |
5245 | db 'terminate - terminate loaded program',10 |
4452 | db 'detach - detach from debugging program',10 |
5246 | db 'detach - detach from debugging program',10 |
4453 | db 'stop - suspend execution of debugging program',10 |
5247 | db 'stop - suspend execution of debugging program',10 |
4454 | db 'g [ |
5248 | db 'g [ |
4455 | db 's = |
5249 | db 's = |
Line 4571... | Line 5365... | ||
4571 | 5365 | ||
4572 | aUnpack db 7,'unpack',0 |
5366 | aUnpack db 7,'unpack',0 |
4573 | UnpackHelp db 'Try to bypass unpacker code',10 |
5367 | UnpackHelp db 'Try to bypass unpacker code',10 |
Line -... | Line 5368... | ||
- | 5368 | UnpackSyntax db 'Usage: unpack',10,0 |
|
- | 5369 | ||
- | 5370 | aLoadSymbols db 13,'load-symbols',0 |
|
- | 5371 | LoadSymbolsHelp db 'Load symbolic information for executable',10 |
|
4574 | UnpackSyntax db 'Usage: unpack',10,0 |
5372 | LoadSymbolsSyntax db 'Usage: load-symbols |
Line 4575... | Line 5373... | ||
4575 | 5373 | ||
4576 | aUnknownCommand db 'Unknown command',10,0 |
5374 | aUnknownCommand db 'Unknown command',10,0 |
- | 5375 | ||
- | 5376 | load_err_msg db 'Cannot load program. ',0 |
|
4577 | 5377 | unk_err_msg db 'Unknown error code -%4X',10,0 |
|
4578 | load_err_msg db 'Cannot load program. ',0 |
5378 | aCannotLoadFile db 'Cannot load file. ',0 |
4579 | unk_err_msg db 'Unknown error code -%4X',10,0 |
5379 | unk_err_msg2 db 'Unknown error code %4X.',10,0 |
4580 | load_err_msgs: |
5380 | load_err_msgs: |
4581 | dd .1, 0, .3, 0, .5, .6, 0, 0, .9, .A, 0, 0, 0, 0, 0, 0 |
5381 | dd .1, 0, .3, 0, .5, .6, 0, 0, .9, .A, 0, 0, 0, 0, 0, 0 |
Line 4627... | Line 5427... | ||
4627 | aQuests db '??' |
5427 | aQuests db '??' |
4628 | aDots db '...' |
5428 | aDots db '...' |
4629 | aParseError db 'Parse error',10,0 |
5429 | aParseError db 'Parse error',10,0 |
4630 | aDivByZero db 'Division by 0',10,0 |
5430 | aDivByZero db 'Division by 0',10,0 |
4631 | calc_string db '%8X',10,0 |
5431 | calc_string db '%8X',10,0 |
- | 5432 | aNoMemory db 'No memory',10,0 |
|
- | 5433 | aSymbolsLoaded db 'Symbols loaded',10,0 |
|
4632 | aUnaligned db 'Unaligned address',10,0 |
5434 | aUnaligned db 'Unaligned address',10,0 |
4633 | aEnabledBreakErr db 'Enabled breakpoints are not allowed',10,0 |
5435 | aEnabledBreakErr db 'Enabled breakpoints are not allowed',10,0 |
4634 | aInterrupted db 'Interrupted',10,0 |
5436 | aInterrupted db 'Interrupted',10,0 |
4635 | aUnpacked db 'Unpacked successful!',10,0 |
5437 | aUnpacked db 'Unpacked successful!',10,0 |
4636 | aPacked1 db 'Program is probably packed with ',0 |
5438 | aPacked1 db 'Program is probably packed with ',0 |
Line 4701... | Line 5503... | ||
4701 | dd cunk, cunk, cunk, cunk, cunk, cunk, cunk, cunk |
5503 | dd cunk, cunk, cunk, cunk, cunk, cunk, cunk, cunk |
4702 | dd cunk, cunk, cunk, cunk, cunk, cunk, cunk, cunk ; 2x |
5504 | dd cunk, cunk, cunk, cunk, cunk, cunk, cunk, cunk ; 2x |
4703 | dd cunk, cunk, cunk, cunk, cunk, cunk, cunk, cunk |
5505 | dd cunk, cunk, cunk, cunk, cunk, cunk, cunk, cunk |
4704 | dd cunk, crdtsc,cunk, cunk, csysenter,cunk,cunk, cunk ; 3x |
5506 | dd cunk, crdtsc,cunk, cunk, csysenter,cunk,cunk, cunk ; 3x |
4705 | dd cunk, cunk, cunk, cunk, cunk, cunk, cunk, cunk |
5507 | dd cunk, cunk, cunk, cunk, cunk, cunk, cunk, cunk |
4706 | dd cunk, cunk, cunk, cunk, cunk, cunk, cunk, cunk ; 4x |
5508 | dd cmovcc,cmovcc,cmovcc,cmovcc,cmovcc,cmovcc,cmovcc,cmovcc ; 4x |
4707 | dd cunk, cunk, cunk, cunk, cunk, cunk, cunk, cunk |
5509 | dd cmovcc,cmovcc,cmovcc,cmovcc,cmovcc,cmovcc,cmovcc,cmovcc |
4708 | dd cunk, cunk, cunk, cunk, cunk, cunk, cunk, cunk ; 5x |
5510 | dd cunk, cunk, cunk, cunk, cunk, cunk, cunk, cunk ; 5x |
4709 | dd cunk, cunk, cunk, cunk, cunk, cunk, cunk, cunk |
5511 | dd cunk, cunk, cunk, cunk, cunk, cunk, cunk, cunk |
4710 | dd cunk, cunk, cunk, cunk, cunk, cunk, cunk, cunk ; 6x |
5512 | dd cpcmn, cpcmn, cpcmn, cpcmn, cpcmn, cpcmn, cpcmn, cpcmn ; 6x |
4711 | dd cunk, cunk, cunk, cunk, cunk, cunk, cunk, cunk |
5513 | dd cpcmn, cpcmn, cpcmn, cpcmn, cunk, cunk, cmovd1,cmovq1 |
4712 | dd cunk, cunk, cunk, cunk, cunk, cunk, cunk, cunk ; 7x |
5514 | dd cunk, cpshift,cpshift,cpshift,cpcmn,cpcmn,cpcmn,cemms ; 7x |
4713 | dd cunk, cunk, cunk, cunk, cunk, cunk, cunk, cunk |
5515 | dd cunk, cunk, cunk, cunk, cunk, cunk, cmovd2,cmovq2 |
4714 | dd cjcc2, cjcc2, cjcc2, cjcc2, cjcc2, cjcc2, cjcc2, cjcc2 ; 8x |
5516 | dd cjcc2, cjcc2, cjcc2, cjcc2, cjcc2, cjcc2, cjcc2, cjcc2 ; 8x |
4715 | dd cjcc2, cjcc2, cjcc2, cjcc2, cjcc2, cjcc2, cjcc2, cjcc2 |
5517 | dd cjcc2, cjcc2, cjcc2, cjcc2, cjcc2, cjcc2, cjcc2, cjcc2 |
4716 | dd csetcc,csetcc,csetcc,csetcc,csetcc,csetcc,csetcc,csetcc ; 9x |
5518 | dd csetcc,csetcc,csetcc,csetcc,csetcc,csetcc,csetcc,csetcc ; 9x |
4717 | dd csetcc,csetcc,csetcc,csetcc,csetcc,csetcc,csetcc,csetcc |
5519 | dd csetcc,csetcc,csetcc,csetcc,csetcc,csetcc,csetcc,csetcc |
4718 | dd cunk, cunk, ccpuid,cbtx2, cshld, cshld, cunk, cunk ; Ax |
5520 | dd cunk, cunk, ccpuid,cbtx2, cshld, cshld, cunk, cunk ; Ax |
4719 | dd cunk, cunk, cunk, cbtx2, cshrd, cshrd, cunk, cop22 |
5521 | dd cunk, cunk, cunk, cbtx2, cshrd, cshrd, cunk, cop22 |
4720 | dd ccmpxchg,ccmpxchg,cunk,cbtx2,cunk, cunk, cmovzx,cmovzx ; Bx |
5522 | dd ccmpxchg,ccmpxchg,cunk,cbtx2,cunk, cunk, cmovzx,cmovzx ; Bx |
4721 | dd cunk, cunk, cbtx1, cbtx2, cbsf, cbsr, cmovsx,cmovsx |
5523 | dd cunk, cunk, cbtx1, cbtx2, cbsf, cbsr, cmovsx,cmovsx |
4722 | dd cunk, cunk, cunk, cunk, cunk, cunk, cunk, ccmpxchg8b ; Cx |
5524 | dd cunk, cunk, cunk, cunk, cunk, cunk, cunk, ccmpxchg8b ; Cx |
4723 | dd cbswap,cbswap,cbswap,cbswap,cbswap,cbswap,cbswap,cbswap |
5525 | dd cbswap,cbswap,cbswap,cbswap,cbswap,cbswap,cbswap,cbswap |
4724 | dd cunk, cunk, cunk, cunk, cunk, cunk, cunk, cunk ; Dx |
5526 | dd cunk, cpsrlw,cpsrlw,cpsrlq,cpcmn, cpcmn, cunk, cunk ; Dx |
4725 | dd cunk, cunk, cunk, cunk, cunk, cunk, cunk, cunk |
5527 | dd cpcmn, cpcmn, cpcmn, cpcmn, cpcmn, cpcmn, cpcmn, cpcmn |
4726 | dd cunk, cunk, cunk, cunk, cunk, cunk, cunk, cunk ; Ex |
5528 | dd cpcmn, cpsraw,cpsrad,cpcmn, cpcmn, cpcmn, cunk, cunk ; Ex |
4727 | dd cunk, cunk, cunk, cunk, cunk, cunk, cunk, cunk |
5529 | dd cpcmn, cpcmn, cpcmn, cpcmn, cpcmn, cpcmn, cpcmn, cpcmn |
4728 | dd cunk, cunk, cunk, cunk, cunk, cunk, cunk, cunk ; Fx |
5530 | dd cunk, cpsllw,cpslld,cpsllq,cpcmn, cpcmn, cpcmn, cunk ; Fx |
4729 | dd cunk, cunk, cunk, cunk, cunk, cunk, cunk, cunk |
5531 | dd cpcmn, cpcmn, cpcmn, cpcmn, cpcmn, cpcmn, cpcmn, cunk |
Line 4730... | Line 5532... | ||
4730 | 5532 | ||
4731 | reg_table: |
5533 | reg_table: |
4732 | db 2,'al',0 |
5534 | db 2,'al',0 |
4733 | db 2,'cl',1 |
5535 | db 2,'cl',1 |
Line 4754... | Line 5556... | ||
4754 | db 3,'esi',22 |
5556 | db 3,'esi',22 |
4755 | db 3,'edi',23 |
5557 | db 3,'edi',23 |
4756 | db 3,'eip',24 |
5558 | db 3,'eip',24 |
4757 | db 0 |
5559 | db 0 |
Line -... | Line 5560... | ||
- | 5560 | ||
- | 5561 | IncludeIGlobals |
|
- | 5562 | ||
- | 5563 | fn70_read_block: |
|
- | 5564 | dd 0 |
|
- | 5565 | dq 0 |
|
- | 5566 | dd ? |
|
- | 5567 | dd ? |
|
- | 5568 | db 0 |
|
- | 5569 | dd ? |
|
- | 5570 | ||
- | 5571 | fn70_attr_block: |
|
- | 5572 | dd 5 |
|
- | 5573 | dd 0,0,0 |
|
- | 5574 | dd fileattr |
|
- | 5575 | db 0 |
|
- | 5576 | dd ? |
|
4758 | 5577 | ||
4759 | fn70_load_block: |
5578 | fn70_load_block: |
4760 | dd 7 |
5579 | dd 7 |
4761 | dd 1 |
5580 | dd 1 |
4762 | load_params dd 0 |
5581 | load_params dd 0 |
Line 4765... | Line 5584... | ||
4765 | i_end: |
5584 | i_end: |
4766 | loadname: |
5585 | loadname: |
4767 | db 0 |
5586 | db 0 |
4768 | rb 255 |
5587 | rb 255 |
Line -... | Line 5588... | ||
- | 5588 | ||
- | 5589 | symbolsfile rb 260 |
|
4769 | 5590 | ||
4770 | prgname_ptr dd ? |
5591 | prgname_ptr dd ? |
Line -... | Line 5592... | ||
- | 5592 | prgname_len dd ? |
|
- | 5593 | ||
4771 | prgname_len dd ? |
5594 | IncludeUGlobals |
Line 4772... | Line 5595... | ||
4772 | 5595 | ||
4773 | dbgwnd dd ? |
5596 | dbgwnd dd ? |
Line 4784... | Line 5607... | ||
4784 | 5607 | ||
4785 | dbgbufsize dd ? |
5608 | dbgbufsize dd ? |
4786 | dbgbuflen dd ? |
5609 | dbgbuflen dd ? |
Line -... | Line 5610... | ||
- | 5610 | dbgbuf rb 256 |
|
- | 5611 | ||
4787 | dbgbuf rb 256 |
5612 | fileattr rb 40 |
Line 4788... | Line 5613... | ||
4788 | 5613 | ||
4789 | needzerostart: |
5614 | needzerostart: |
4790 | 5615 | ||
Line 4819... | Line 5644... | ||
4819 | breakpoints rb breakpoints_n*6 |
5644 | breakpoints rb breakpoints_n*6 |
4820 | drx_break rd 4 |
5645 | drx_break rd 4 |
Line 4821... | Line 5646... | ||
4821 | 5646 | ||
Line -... | Line 5647... | ||
- | 5647 | disasm_buf_size dd ? |
|
- | 5648 | ||
- | 5649 | symbols dd ? |
|
4822 | disasm_buf_size dd ? |
5650 | num_symbols dd ? |
Line 4823... | Line 5651... | ||
4823 | 5651 | ||
Line 4824... | Line 5652... | ||
4824 | bReload db ? |
5652 | bReload db ? |