Subversion Repositories Kolibri OS

Rev

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  [params] - load program for debugging',10
5242
	db	'load  [params] - load program for debugging',10
4450
	db	'reload               - reload debugging program',10
5243
	db	'reload               - reload debugging program',10
-
 
5244
	db	'load-symbols   - load information on symbols for program',10
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 []     - go on (resume execution of debugging program)',10
5248
	db	'g []     - go on (resume execution of debugging program)',10
4455
	db	's =         - program step',10
5249
	db	's =         - program step',10
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 ',10,0
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	?