Subversion Repositories Kolibri OS

Rev

Rev 8140 | Rev 8919 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 8140 Rev 8824
Line -... Line 1...
-
 
1
include "..\..\..\develop\info3ds\info_fun_float.inc"
-
 
2
 
-
 
3
align 4
-
 
4
proc @DoubleToStr$qduso uses esi edi
-
 
5
  cld
-
 
6
  lea  esi,[esp+12]
-
 
7
  mov  edi,Data_Double
-
 
8
  movsd
-
 
9
  movsd
-
 
10
  mov  ax,[esp+20]
-
 
11
  mov [NumberSymbolsAD],ax
-
 
12
  call DoubleFloat_to_String
-
 
13
  cmp dword[esp+24],0
-
 
14
  je @f
-
 
15
  call String_crop_0
-
 
16
  @@:
-
 
17
  mov eax,Data_String
-
 
18
  ret
-
 
19
endp
-
 
20
 
-
 
21
align 4
-
 
22
proc @StrToDouble$qpc uses esi edi
-
 
23
  cld
-
 
24
  mov edi,Data_String
-
 
25
  mov esi,[esp+12]
-
 
26
  mov ecx,32
-
 
27
  repnz movsb
-
 
28
  call String_to_DoubleFloat
-
 
29
  fld qword[Data_Double]
-
 
30
  ret
-
 
31
endp
-
 
32
 
-
 
33
;input:
-
 
34
; *str - указатель на строку, число должно быть в 10 или 16 ричном виде
-
 
35
;output:
-
 
36
; eax - число
-
 
37
align 4
-
 
38
proc @StrToInt$qpc uses ebx esi
-
 
39
	xor eax,eax
-
 
40
	xor ebx,ebx
-
 
41
	mov esi,[esp+12]
-
 
42
 
-
 
43
	;на случай если перед числом находятся пробелы
-
 
44
	@@:
-
 
45
	cmp byte[esi],' '
-
 
46
	jne @f
-
 
47
		inc esi
-
 
48
		jmp @b
-
 
49
	@@:
-
 
50
 
-
 
51
	;определение отрицательных чисел
-
 
52
	xor ecx,ecx
-
 
53
	inc ecx
-
 
54
	cmp byte[esi],'-'
-
 
55
	jne @f
-
 
56
		dec ecx
-
 
57
		inc esi
-
 
58
	@@:
-
 
59
 
-
 
60
	cmp word[esi],'0x'
-
 
61
	je .load_digit_16
-
 
62
 
-
 
63
	.load_digit_10: ;считывание 10-тичных цифр
-
 
64
		mov bl,byte[esi]
-
 
65
		cmp bl,'0'
-
 
66
		jl @f
-
 
67
		cmp bl,'9'
-
 
68
		jg @f
-
 
69
			sub bl,'0'
-
 
70
			imul eax,10
-
 
71
			add eax,ebx
-
 
72
			inc esi
-
 
73
			jmp .load_digit_10
-
 
74
	jmp @f
-
 
75
 
-
 
76
	.load_digit_16: ;считывание 16-ричных цифр
-
 
77
		add esi,2
-
 
78
	.cycle_16:
-
 
79
		mov bl,byte[esi]
-
 
80
		cmp bl,'0'
-
 
81
		jl @f
-
 
82
		cmp bl,'f'
-
 
83
		jg @f
-
 
84
		cmp bl,'9'
-
 
85
		jle .us1
-
 
86
			cmp bl,'A'
-
 
87
			jl @f ;отсеиваем символы >'9' и <'A'
-
 
88
		.us1: ;составное условие
-
 
89
		cmp bl,'F'
-
 
90
		jle .us2
-
 
91
			cmp bl,'a'
-
 
92
			jl @f ;отсеиваем символы >'F' и <'a'
-
 
93
			sub bl,32 ;переводим символы в верхний регистр, для упрощения их последущей обработки
-
 
94
		.us2: ;составное условие
-
 
95
			sub bl,'0'
-
 
96
			cmp bl,9
-
 
97
			jle .cor1
-
 
98
				sub bl,7 ;convert 'A' to '10'
-
 
99
			.cor1:
-
 
100
			shl eax,4
-
 
101
			add eax,ebx
-
 
102
			inc esi
-
 
103
			jmp .cycle_16
-
 
104
	@@:
-
 
105
	or ecx,ecx ;если число отрицательное
-
 
106
	jnz @f
-
 
107
		sub ecx,eax
-
 
108
		mov eax,ecx
-
 
109
	@@:
-
 
110
	ret
-
 
111
endp
-
 
112
 
-
 
113
align 4
1
proc @Kolibri@StrLen$qpxc uses edi
114
proc @strlen$qpxc uses edi
2
  cld
115
  cld
3
  mov  edi,[esp+8]
116
  mov  edi,[esp+8]
4
  mov  ecx,-1
117
  mov  ecx,-1
5
  xor  al,al
118
  xor  al,al
6
  repnz scas byte [edi]
119
  repnz scasb
7
  not  ecx
120
  not  ecx
8
  lea  eax,[ecx-1]
121
  lea  eax,[ecx-1]
9
  ret
122
  ret
10
endp
123
endp
Line -... Line 124...
-
 
124
 
11
 
125
align 4
12
proc @Kolibri@StrCopy$qpcpxc uses esi edi
126
proc @strcpy$qpcpxc uses esi edi
13
  cld
127
  cld
14
  mov  edi,[esp+16]
128
  mov  edi,[esp+16]
15
  mov  ecx,-1
129
  mov  ecx,-1
16
  mov  esi,edi
130
  mov  esi,edi
17
  xor  al,al
131
  xor  al,al
18
  repnz scas byte [edi]
132
  repnz scasb
19
  not  ecx
133
  not  ecx
20
  mov  edi,[esp+12]
134
  mov  edi,[esp+12]
21
  mov  edx,ecx
135
  mov  edx,ecx
22
  mov  eax,edi
136
  mov  eax,edi
23
  shr  ecx,2
137
  shr  ecx,2
24
  rep movs dword [edi],[esi]
138
  rep movsd
25
  mov  ecx,edx
139
  mov  ecx,edx
26
  and  ecx,3
140
  and  ecx,3
27
  rep movs byte [edi],[esi]
141
  rep movsb
28
  ret
142
  ret
Line -... Line 143...
-
 
143
endp
29
endp
144
 
30
 
145
align 4
31
proc @Kolibri@MemCopy$qpvpxvui uses esi edi
146
proc @memcpy$qpvpxvui uses esi edi
32
  cld
147
  cld
33
  mov  edi,[esp+12]
148
  mov  edi,[esp+12]
34
  mov  eax,edi
149
  mov  eax,edi
35
  mov  ecx,[esp+20]
150
  mov  ecx,[esp+20]
36
  mov  esi,[esp+16]
151
  mov  esi,[esp+16]
37
  mov  edx,ecx
152
  mov  edx,ecx
38
  shr  ecx,2
153
  shr  ecx,2
39
  rep movs dword [edi],[esi]
154
  rep movsd
40
  mov  ecx,edx
155
  mov  ecx,edx
41
  and  ecx,3
156
  and  ecx,3
42
  rep movs byte [edi],[esi]
157
  rep movsb
Line -... Line 158...
-
 
158
  ret
43
  ret
159
endp
44
endp
160
 
45
 
161
align 4
46
proc @Kolibri@MemSet$qpvcui uses edi
162
proc @memset$qpvcui uses edi
47
  cld
163
  cld
48
  mov  edi,[esp+8]
164
  mov  edi,[esp+8]
49
  mov  al,[esp+12]
165
  mov  al,[esp+12]
50
  mov  ah,al
166
  mov  ah,al
51
  mov  dx,ax
167
  mov  dx,ax
52
  shl  eax,16
168
  shl  eax,16
53
  mov  ax,dx
169
  mov  ax,dx
54
  mov  ecx,[esp+16]
170
  mov  ecx,[esp+16]
55
  mov  edx,ecx
171
  mov  edx,ecx
56
  shr  ecx,2
172
  shr  ecx,2
57
  rep stos dword [edi]
173
  rep stosd
58
  mov  ecx,edx
174
  mov  ecx,edx
59
  and  ecx,3
175
  and  ecx,3
60
  rep stos byte [edi]
176
  rep stosb
Line -... Line 177...
-
 
177
  mov  eax,[esp+4]
-
 
178
  ret
-
 
179
endp
-
 
180
 
-
 
181
align 4
-
 
182
proc @strcmp$qpxct1 uses esi edi
-
 
183
	cld
-
 
184
	xor	eax,eax
-
 
185
	mov	edi,[esp+16]
-
 
186
	mov	esi,edi
-
 
187
	mov	ecx,-1
-
 
188
	repne scasb
-
 
189
	not	ecx
-
 
190
	mov	edi,esi
-
 
191
	mov	esi,[esp+12]
-
 
192
	repe  cmpsb
-
 
193
	mov	al,[esi-1]
-
 
194
	movzx edx,byte[edi-1]
-
 
195
	sub	eax,edx
-
 
196
	ret
-
 
197
endp
-
 
198
 
-
 
199
align 4
-
 
200
proc @strchr$qpxci uses edi
-
 
201
	mov	edi,[esp+8]
-
 
202
	mov	edx,edi
-
 
203
	mov	ecx,-1
-
 
204
	xor	eax,eax
-
 
205
	cld
-
 
206
	repne scasb
-
 
207
	not	ecx
-
 
208
	mov	edi,edx
-
 
209
	mov	al,[esp+12]
-
 
210
	repne scasb
-
 
211
	jnz	@f
-
 
212
	lea	eax,[edi-1]
-
 
213
	ret
-
 
214
@@:
-
 
215
	xor	eax,eax
-
 
216
	ret
-
 
217
endp
-
 
218
 
-
 
219
align 4
-
 
220
proc @strstr$qpxct1 uses ebx esi edi
-
 
221
	xor  eax,eax
-
 
222
	mov  esi,[esp+16]
-
 
223
	test esi,esi
-
 
224
	je   .not_f
-
 
225
	mov  edi,[esp+20]
-
 
226
	test edi,edi
-
 
227
	je   .not_f
-
 
228
	mov  edx,edi
-
 
229
	mov	 ecx,-1
-
 
230
	cld
-
 
231
	repne scasb
-
 
232
	not	 ecx
-
 
233
	mov  ebx,ecx ;ebx = strlen(str2)
-
 
234
align 4
-
 
235
.cycle:
-
 
236
	cmp  byte[esi],0
-
 
237
	je   .not_f
-
 
238
	mov  edi,edx
-
 
239
	push esi
-
 
240
	mov  ecx,ebx
-
 
241
	repe cmpsb
-
 
242
	pop  esi
-
 
243
	inc  esi
-
 
244
	cmp  byte[edi-1],0
-
 
245
	jne  .cycle	
-
 
246
 
-
 
247
	lea  eax,[esi-1]
-
 
248
.not_f:
61
  mov  eax,[esp+4]
249
	ret 
62
  ret
250
endp
63
endp
251
 
64
 
252
align 4
65
proc __ftol
253
proc __ftol
Line 77... Line 265...
77
  mov  edx,[esp+4]
265
  mov  edx,[esp+4]
78
  add  esp,12
266
  add  esp,12
79
  ret
267
  ret
80
endp
268
endp
Line -... Line 269...
-
 
269
 
81
 
270
align 4
82
proc @Kolibri@Floor$qd
271
proc @floor$qd
83
  fld  qword [esp+4]
272
  fld  qword [esp+4]
84
  mov  ax,[esp+10]
273
  mov  ax,[esp+10]
85
  shl  ax,1
274
  shl  ax,1
86
  cmp  ax,0x8680
275
  cmp  ax,0x8680
Line 101... Line 290...
101
  fldcw word [esp]
290
  fldcw word [esp]
102
  add  esp,2
291
  add  esp,2
103
.floor_end:
292
.floor_end:
104
  ret
293
  ret
105
endp
294
endp
106
-