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 |