Subversion Repositories Kolibri OS

Rev

Rev 7836 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 7836 Rev 9459
Line 1... Line 1...
1
; flat assembler core
1
; flat assembler core
2
; Copyright (c) 1999-2020, Tomasz Grysztar.
2
; Copyright (c) 1999-2021, Tomasz Grysztar.
3
; All rights reserved.
3
; All rights reserved.
Line 4... Line 4...
4
 
4
 
5
convert_expression:
5
convert_expression:
6
	push	ebp
6
	push	ebp
Line 133... Line 133...
133
	stosb
133
	stosb
134
      subexpression_closed:
134
      subexpression_closed:
135
	ret
135
	ret
136
      symbol_value:
136
      symbol_value:
137
	cmp	[source_start],0
137
	mov	eax,[source_start]
138
	je	preprocessor_value
138
	test	eax,eax
-
 
139
	jz	preprocessor_value
139
	push	edi esi
140
	cmp	eax,-1
-
 
141
	je	invalid_value
-
 
142
	push	edi esi
140
	lods	word [esi]
143
	lods	word [esi]
141
	cmp	al,1Ah
144
	cmp	al,1Ah
142
	jne	no_address_register
145
	jne	no_address_register
143
	movzx	ecx,ah
146
	movzx	ecx,ah
144
	call	get_symbol
147
	call	get_symbol
Line 190... Line 193...
190
	stos	byte [edi]
193
	stos	byte [edi]
191
	ret
194
	ret
192
      preprocessor_value:
195
      preprocessor_value:
193
	dec	edi
196
	dec	edi
194
	cmp	[hash_tree],0
197
	lods	byte [esi]
195
	je	invalid_value
-
 
196
	lods	byte [esi]
-
 
197
	cmp	al,1Ah
198
	cmp	al,1Ah
198
	jne	invalid_value
199
	jne	invalid_value
199
	lods	byte [esi]
200
	lods	byte [esi]
200
	mov	cl,al
201
	mov	cl,al
201
	mov	ch,10b
202
	mov	ch,10b
202
	call	get_preprocessor_symbol
203
	call	get_preprocessor_symbol
203
	jc	invalid_value
204
	jc	invalid_value
204
	push	esi
205
	test	edx,edx
-
 
206
	jz	special_preprocessor_value
-
 
207
	push	esi
205
	mov	esi,[edx+8]
208
	mov	esi,[edx+8]
206
	push	[current_offset]
209
	push	[current_offset]
207
	call	convert_expression
210
	call	convert_expression
208
	pop	[current_offset]
211
	pop	[current_offset]
209
	pop	esi
212
	pop	esi
210
	ret
213
	ret
211
 
214
      special_preprocessor_value:
-
 
215
	cmp	eax,preprocessed_line_value
-
 
216
	jne	invalid_value
-
 
217
	call	get_current_line_from_file
-
 
218
	mov	al,4
-
 
219
	stos	byte [edi]
-
 
220
	mov	eax,[ebx+4]
-
 
221
	stos	dword [edi]
-
 
222
	ret
-
 
223
 
Line 212... Line 224...
212
get_number:
224
get_number:
213
	xor	ebp,ebp
225
	xor	ebp,ebp
214
	lods	byte [esi]
226
	lods	byte [esi]
215
	cmp	al,22h
227
	cmp	al,22h