Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 242 → Rev 226

/programs/develop/fasm/trunk/expressi.inc
180,7 → 180,7
cmp byte [ebx],'$'
je pascal_hex_number
cmp word [ebx],'0x'
je get_hex_number
je c_hex_number
mov al,[esi]
dec esi
cmp al,'h'
279,6 → 279,9
jz get_bin_digit
or ebp,-1
jmp get_bin_digit
c_hex_number:
cmp cl,2
je bad_number
pascal_hex_number:
cmp cl,1
je bad_number
1267,9 → 1270,6
cmp ah,dl
jne value_out_of_range
mov [esi+10],al
or al,al
jnz mul_first_register_ok
mov [esi+8],al
mul_first_register_ok:
cmp byte [esi+9],0
je mul_calculated
1287,9 → 1287,6
cmp ah,dl
jne value_out_of_range
mov [esi+11],al
or al,al
jnz mul_calculated
mov [esi+9],al
mul_calculated:
pop esi
jmp calculation_loop
2178,9 → 2175,6
ret
 
preevaluate_logical_expression:
xor al,al
preevaluate_embedded_logical_expression:
mov [logical_value_wrapping],al
push edi
call preevaluate_logical_value
preevaluation_loop:
2269,8 → 2263,6
cmp byte [esi],'{'
jne skip_simple_logical_value
inc esi
xchg al,[logical_value_wrapping]
push eax
skip_logical_expression:
call skip_logical_value
lods byte [esi]
2283,41 → 2275,28
cmp al,'&'
je skip_logical_expression
cmp al,'}'
jne wrongly_structured_logical_expression
pop eax
mov [logical_value_wrapping],al
logical_value_skipped:
clc
ret
je logical_value_skipped
wrongly_structured_logical_expression:
stc
ret
skip_simple_logical_value:
mov [logical_value_parentheses],0
find_simple_logical_value_end:
mov al,[esi]
or al,al
jz logical_value_skipped
cmp al,0Fh
je logical_value_skipped
cmp al,'}'
je logical_value_skipped
cmp al,'|'
je logical_value_skipped
cmp al,'&'
je logical_value_skipped
cmp al,'{'
je skip_logical_value_internal_parenthesis
cmp al,'}'
jne skip_logical_value_symbol
sub [logical_value_parentheses],1
jnc skip_logical_value_symbol
cmp [logical_value_wrapping],al
jne skip_logical_value_symbol
jmp logical_value_skipped
skip_logical_value_internal_parenthesis:
inc [logical_value_parentheses]
skip_logical_value_symbol:
call skip_symbol
jmp find_simple_logical_value_end
jmp skip_simple_logical_value
logical_value_skipped:
clc
ret
 
preevaluate_logical_value:
mov ebp,edi
preevaluate_negation:
2327,16 → 2306,12
jmp preevaluate_negation
preevaluate_negation_ok:
mov ebx,esi
xor edx,edx
cmp byte [esi],'{'
jne preevaluate_simple_logical_value
lods byte [esi]
stos byte [edi]
jne find_logical_value_boundaries
movs byte [edi],[esi]
push ebp
mov dl,[logical_value_wrapping]
push edx
call preevaluate_embedded_logical_expression
pop edx
mov [logical_value_wrapping],dl
call preevaluate_logical_expression
pop ebp
cmp al,0FFh
je invalid_logical_value
2360,17 → 2335,12
mov edi,ebp
mov al,0FFh
ret
preevaluate_simple_logical_value:
xor edx,edx
mov [logical_value_parentheses],edx
find_logical_value_boundaries:
mov al,[esi]
or al,al
jz logical_value_boundaries_found
cmp al,'{'
je logical_value_internal_parentheses
cmp al,'}'
je logical_value_boundaries_parenthesis_close
je logical_value_boundaries_found
cmp al,'|'
je logical_value_boundaries_found
cmp al,'&'
2388,14 → 2358,6
next_symbol_in_logical_value:
call skip_symbol
jmp find_logical_value_boundaries
logical_value_internal_parentheses:
inc [logical_value_parentheses]
jmp next_symbol_in_logical_value
logical_value_boundaries_parenthesis_close:
sub [logical_value_parentheses],1
jnc next_symbol_in_logical_value
cmp [logical_value_wrapping],'{'
jne next_symbol_in_logical_value
logical_value_boundaries_found:
or edx,edx
jz non_preevaluable_logical_value
2544,9 → 2506,6
jmp invalid_logical_value
 
calculate_logical_expression:
xor al,al
calculate_embedded_logical_expression:
mov [logical_value_wrapping],al
call get_logical_value
logical_loop:
cmp byte [esi],'|'
2789,12 → 2748,8
or al,-1
jmp logical_value_ok
logical_expression:
lods byte [esi]
mov dl,[logical_value_wrapping]
push edx
call calculate_embedded_logical_expression
pop edx
mov [logical_value_wrapping],dl
inc esi
call calculate_logical_expression
push eax
lods byte [esi]
cmp al,'}'