Subversion Repositories Kolibri OS

Rev

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

Rev 1062 Rev 1189
Line 74... Line 74...
74
	ret
74
	ret
75
 
75
 
Line 76... Line 76...
76
convert_number:
76
convert_number:
77
	lea	eax,[edi-10h]
77
	lea	eax,[edi-10h]
-
 
78
	mov	edx,[memory_end]
-
 
79
	cmp	[source_start],0
-
 
80
	je	check_memory_for_number
78
	cmp	eax,[labels_list]
81
	mov	edx,[labels_list]
-
 
82
      check_memory_for_number:
-
 
83
	cmp	eax,edx
79
	jae	out_of_memory
84
	jae	out_of_memory
-
 
85
	mov	eax,esp
-
 
86
	sub	eax,100h
-
 
87
	jc	stack_overflow
-
 
88
	cmp	eax,[stack_limit]
-
 
89
	jb	stack_overflow
80
	cmp	byte [esi],'('
90
	cmp	byte [esi],'('
81
	je	expression_value
91
	je	expression_value
82
	inc	edi
92
	inc	edi
83
	call	get_number
93
	call	get_number
84
	jc	symbol_value
94
	jc	symbol_value
Line 109... Line 119...
109
	mov	byte [edi-1],2
119
	mov	byte [edi-1],2
110
	scas	word [edi]
120
	scas	word [edi]
111
	ret
121
	ret
112
      expression_value:
122
      expression_value:
113
	mov	eax,esp
123
	inc	esi
114
	sub	eax,100h
-
 
115
	jc	stack_overflow
-
 
116
	cmp	eax,[stack_limit]
-
 
117
	jb	stack_overflow
-
 
118
	inc	esi
-
 
119
	push	[current_offset]
124
	push	[current_offset]
120
	call	convert_expression
125
	call	convert_expression
121
	pop	[current_offset]
126
	pop	[current_offset]
122
	lods	byte [esi]
127
	lods	byte [esi]
123
	cmp	al,')'
128
	cmp	al,')'
124
	jne	invalid_expression
129
	jne	invalid_expression
125
	ret
130
	ret
126
      symbol_value:
131
      symbol_value:
127
	push	edi
132
	cmp	[source_start],0
-
 
133
	je	preprocessor_value
-
 
134
	push	edi
128
	mov	edi,address_registers
135
	mov	edi,address_registers
129
	call	get_operator
136
	call	get_operator
130
	or	al,al
137
	or	al,al
131
	jnz	register_value
138
	jnz	register_value
132
	mov	edi,directive_operators
139
	mov	edi,directive_operators
Line 151... Line 158...
151
	pop	edi
158
	pop	edi
152
	mov	byte [edi-1],10h
159
	mov	byte [edi-1],10h
153
	stos	byte [edi]
160
	stos	byte [edi]
154
	ret
161
	ret
155
 
162
      preprocessor_value:
-
 
163
	dec	edi
-
 
164
	lods	byte [esi]
-
 
165
	cmp	al,1Ah
-
 
166
	jne	invalid_value
-
 
167
	lods	byte [esi]
-
 
168
	mov	cl,al
-
 
169
	mov	ch,10b
-
 
170
	call	get_preprocessor_symbol
-
 
171
	jc	invalid_value
-
 
172
	push	esi
-
 
173
	mov	esi,[edx+8]
-
 
174
	push	[current_offset]
-
 
175
	call	convert_expression
-
 
176
	pop	[current_offset]
-
 
177
	pop	esi
-
 
178
	ret
-
 
179
 
Line 156... Line 180...
156
get_number:
180
get_number:
157
	xor	ebp,ebp
181
	xor	ebp,ebp
158
	lods	byte [esi]
182
	lods	byte [esi]
159
	cmp	al,22h
183
	cmp	al,22h
Line 1041... Line 1065...
1041
	add	edi,0Ch
1065
	add	edi,0Ch
1042
	jmp	calculation_loop
1066
	jmp	calculation_loop
1043
      timestamp_label:
1067
      timestamp_label:
1044
	call	make_timestamp
1068
	call	make_timestamp
1045
	jmp	make_dword_label_value
1069
      make_qword_label_value:
1046
      predefined_label:
1070
	stos	dword [edi]
-
 
1071
	mov	eax,edx
-
 
1072
	stos	dword [edi]
-
 
1073
	add	edi,0Ch
-
 
1074
	jmp	calculation_loop
-
 
1075
      predefined_label:
1047
	or	eax,eax
1076
	or	eax,eax
1048
	jz	current_offset_label
1077
	jz	current_offset_label
1049
	cmp	eax,1
1078
	cmp	eax,1
1050
	je	counter_label
1079
	je	counter_label
1051
	cmp	eax,2
1080
	cmp	eax,2