Subversion Repositories Kolibri OS

Rev

Rev 908 | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 908 Rev 1066
1
DWORD equ dword
1
DWORD equ dword
2
WORD  equ word
2
WORD  equ word
3
BYTE  equ byte
3
BYTE  equ byte
4
 
4
 
5
PTR   equ
5
PTR   equ
6
 
6
 
-
 
7
align 4
-
 
8
 
-
 
9
_dump:
-
 
10
 
-
 
11
        mov ecx, DWORD PTR [esp+4]
-
 
12
@@:
-
 
13
        mov edx, 0x3FD
-
 
14
        in al, dx
-
 
15
        test al, 96
-
 
16
        je  @B
-
 
17
 
-
 
18
        mov dl, -8
-
 
19
        mov eax, ecx
-
 
20
        out dx, al
-
 
21
        ret
-
 
22
 
-
 
23
 
-
 
24
align 4
7
_putc:
25
_putc:
8
        mov ecx, DWORD PTR [esp+4]
26
        mov ecx, DWORD PTR [esp+4]
9
.L13:
27
.L13:
10
        mov edx, 0x3FD
28
        mov edx, 0x3FD
11
        in al, dx
29
        in al, dx
12
        test al, 96
30
        test al, 96
13
        je  .L13
31
        je  .L13
14
        mov dl, -8
32
        mov dl, -8
15
        mov eax, ecx
33
        mov eax, ecx
16
        out dx, al
34
        out dx, al
17
        cmp ecx, 10
35
        cmp ecx, 10
18
        jne .L7
36
        jne .L7
19
        mov cl, 13
37
        mov cl, 13
20
        jmp     .L13
38
        jmp     .L13
21
.L7:
39
.L7:
22
        ret
40
        ret
23
 
41
 
24
_printf:
42
_printf:
25
	push	ebp
43
	push	ebp
26
	push	edi
44
	push	edi
27
	push	esi
45
	push	esi
28
	push	ebx
46
	push	ebx
29
	sub	esp, 40
47
	sub	esp, 40
30
	lea	eax, [esp+64]
48
	lea	eax, [esp+64]
31
	mov	DWORD PTR [esp+4], eax
49
	mov	DWORD PTR [esp+4], eax
32
.L50:
50
.L50:
33
	mov	ecx, DWORD PTR [esp+60]
51
	mov	ecx, DWORD PTR [esp+60]
34
	movzx	edx, BYTE PTR [ecx]
52
	movzx	edx, BYTE PTR [ecx]
35
	test	dl, dl
53
	test	dl, dl
36
        je      .L51
54
        je      .L51
37
.L17:
55
.L17:
38
	lea	eax, [ecx+1]
56
	lea	eax, [ecx+1]
39
	cmp	dl, 37
57
	cmp	dl, 37
40
	mov	DWORD PTR [esp+60], eax
58
	mov	DWORD PTR [esp+60], eax
41
        je      .L18
59
        je      .L18
42
	movsx	eax, dl
60
	movsx	eax, dl
43
	mov	DWORD PTR [esp], eax
61
	mov	DWORD PTR [esp], eax
44
	call	_putc
62
	call	_putc
45
	mov	ecx, DWORD PTR [esp+60]
63
	mov	ecx, DWORD PTR [esp+60]
46
	movzx	edx, BYTE PTR [ecx]
64
	movzx	edx, BYTE PTR [ecx]
47
	test	dl, dl
65
	test	dl, dl
48
        jne     .L17
66
        jne     .L17
49
.L51:
67
.L51:
50
	add	esp, 40
68
	add	esp, 40
51
	pop	ebx
69
	pop	ebx
52
	pop	esi
70
	pop	esi
53
	pop	edi
71
	pop	edi
54
	pop	ebp
72
	pop	ebp
55
	ret
73
	ret
56
.L18:
74
.L18:
57
	movzx	edx, BYTE PTR [ecx+1]
75
	movzx	edx, BYTE PTR [ecx+1]
58
	lea	eax, [ecx+2]
76
	lea	eax, [ecx+2]
59
	mov	DWORD PTR [esp+60], eax
77
	mov	DWORD PTR [esp+60], eax
60
	cmp	dl, 115
78
	cmp	dl, 115
61
        je      .L22
79
        je      .L22
62
        jg      .L23
80
        jg      .L23
63
	cmp	dl, 100
81
	cmp	dl, 100
64
        je      .L21
82
        je      .L21
65
.L20:
83
.L20:
66
	mov	edx, DWORD PTR [esp+4]
84
	mov	edx, DWORD PTR [esp+4]
67
	mov	eax, DWORD PTR [edx]
85
	mov	eax, DWORD PTR [edx]
68
	add	edx, 4
86
	add	edx, 4
69
	mov	DWORD PTR [esp+4], edx
87
	mov	DWORD PTR [esp+4], edx
70
	mov	DWORD PTR [esp], eax
88
	mov	DWORD PTR [esp], eax
71
	call	_putc
89
	call	_putc
72
        jmp     .L50
90
        jmp     .L50
73
.L23:
91
.L23:
74
	cmp	dl, 117
92
	cmp	dl, 117
75
        je      .L21
93
        je      .L21
76
	cmp	dl, 120
94
	cmp	dl, 120
77
        jne     .L20
95
        jne     .L20
78
.L21:
96
.L21:
79
	mov	ecx, DWORD PTR [esp+4]
97
	mov	ecx, DWORD PTR [esp+4]
80
	mov	eax, DWORD PTR [ecx]
98
	mov	eax, DWORD PTR [ecx]
81
	add	ecx, 4
99
	add	ecx, 4
82
	cmp	dl, 100
100
	cmp	dl, 100
83
	mov	DWORD PTR [esp+4], ecx
101
	mov	DWORD PTR [esp+4], ecx
84
	mov	ecx, eax
102
	mov	ecx, eax
85
        je      .L52
103
        je      .L52
86
.L24:
104
.L24:
87
	cmp	dl, 120
105
	cmp	dl, 120
88
        je      .L53
106
        je      .L53
89
	lea	ebp, [esp+20]
107
	lea	ebp, [esp+20]
90
	mov	esi, 10
108
	mov	esi, 10
91
	mov	ebx, ebp
109
	mov	ebx, ebp
92
	mov	edi, ebp
110
	mov	edi, ebp
93
.L43:
111
.L43:
94
	xor	edx, edx
112
	xor	edx, edx
95
	mov	eax, ecx
113
	mov	eax, ecx
96
	div	esi
114
	div	esi
97
	cmp	edx, 9
115
	cmp	edx, 9
98
	lea	eax, [edx+48]
116
	lea	eax, [edx+48]
99
        jle     .L31
117
        jle     .L31
100
	lea	eax, [edx+87]
118
	lea	eax, [edx+87]
101
.L31:
119
.L31:
102
	mov	BYTE PTR [edi], al
120
	mov	BYTE PTR [edi], al
103
	xor	edx, edx
121
	xor	edx, edx
104
	mov	eax, ecx
122
	mov	eax, ecx
105
	div	esi
123
	div	esi
106
	add	edi, 1
124
	add	edi, 1
107
	test	eax, eax
125
	test	eax, eax
108
	mov	ecx, eax
126
	mov	ecx, eax
109
        jne     .L43
127
        jne     .L43
110
	lea	eax, [edi-1]
128
	lea	eax, [edi-1]
111
	cmp	eax, ebx
129
	cmp	eax, ebx
112
	mov	BYTE PTR [edi], 0
130
	mov	BYTE PTR [edi], 0
113
        jbe     .L33
131
        jbe     .L33
114
	lea	ecx, [edi-2]
132
	lea	ecx, [edi-2]
115
.L35:
133
.L35:
116
	movzx	eax, BYTE PTR [ebx]
134
	movzx	eax, BYTE PTR [ebx]
117
	movzx	edx, BYTE PTR [ecx+1]
135
	movzx	edx, BYTE PTR [ecx+1]
118
	mov	BYTE PTR [ebx], dl
136
	mov	BYTE PTR [ebx], dl
119
	add	ebx, 1
137
	add	ebx, 1
120
	mov	BYTE PTR [ecx+1], al
138
	mov	BYTE PTR [ecx+1], al
121
	mov	eax, ecx
139
	mov	eax, ecx
122
	sub	ecx, 1
140
	sub	ecx, 1
123
	cmp	ebx, eax
141
	cmp	ebx, eax
124
        jb      .L35
142
        jb      .L35
125
.L33:
143
.L33:
126
	mov	edx, ebp
144
	mov	edx, ebp
127
.L36:
145
.L36:
128
	movzx	eax, BYTE PTR [edx]
146
	movzx	eax, BYTE PTR [edx]
129
	test	al, al
147
	test	al, al
130
        je      .L50
148
        je      .L50
131
	mov	ebx, edx
149
	mov	ebx, edx
132
.L39:
150
.L39:
133
	movsx	eax, al
151
	movsx	eax, al
134
	mov	DWORD PTR [esp], eax
152
	mov	DWORD PTR [esp], eax
135
	call	_putc
153
	call	_putc
136
	movzx	eax, BYTE PTR [ebx+1]
154
	movzx	eax, BYTE PTR [ebx+1]
137
	add	ebx, 1
155
	add	ebx, 1
138
	test	al, al
156
	test	al, al
139
        jne     .L39
157
        jne     .L39
140
        jmp     .L50
158
        jmp     .L50
141
.L22:
159
.L22:
142
	mov	eax, DWORD PTR [esp+4]
160
	mov	eax, DWORD PTR [esp+4]
143
	mov	edx, DWORD PTR [eax]
161
	mov	edx, DWORD PTR [eax]
144
	add	eax, 4
162
	add	eax, 4
145
	mov	DWORD PTR [esp+4], eax
163
	mov	DWORD PTR [esp+4], eax
146
	test	edx, edx
164
	test	edx, edx
147
        jne     .L36
165
        jne     .L36
148
        mov     edx, .LC0
166
        mov     edx, .LC0
149
        jmp     .L36
167
        jmp     .L36
150
.L52:
168
.L52:
151
	test	eax, eax
169
	test	eax, eax
152
        jns     .L24
170
        jns     .L24
153
	lea	ebx, [esp+21]
171
	lea	ebx, [esp+21]
154
	neg	ecx
172
	neg	ecx
155
	mov	edi, ebx
173
	mov	edi, ebx
156
	mov	esi, 10
174
	mov	esi, 10
157
	lea	ebp, [esp+20]
175
	lea	ebp, [esp+20]
158
	mov	BYTE PTR [esp+20], 45
176
	mov	BYTE PTR [esp+20], 45
159
        jmp     .L43
177
        jmp     .L43
160
.L53:
178
.L53:
161
	lea	ebp, [esp+20]
179
	lea	ebp, [esp+20]
162
	mov	esi, 16
180
	mov	esi, 16
163
	mov	ebx, ebp
181
	mov	ebx, ebp
164
	mov	edi, ebp
182
	mov	edi, ebp
165
        jmp     .L43
183
        jmp     .L43
166
 
184
 
167
.LC0:   db "(null)",0
185
.LC0:   db "(null)",0
168
 
186
 
169
restore DWORD
187
restore DWORD
170
restore WORD
188
restore WORD
171
restore BYTE
189
restore BYTE
172
 
190
 
173
restore PTR
191
restore PTR