Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 205 → Rev 220

/programs/develop/fasm/trunk/assemble.inc
618,7 → 618,7
load_from_code:
cmp byte [esi],'.'
je invalid_value
call get_qword_value
call get_address_value
call calculate_relative_offset
push esi edi
cmp [next_pass_needed],0
676,7 → 676,7
jne invalid_argument
cmp byte [esi],'.'
je invalid_value
call get_qword_value
call get_address_value
call calculate_relative_offset
push esi edi
cmp [next_pass_needed],0
/programs/develop/fasm/trunk/expressi.inc
1828,10 → 1828,10
mov [value_size],2
mov [size_override],-1
call calculate_expression
cmp word [edi+8],0
jne invalid_value
mov eax,[edi+16]
mov [symbol_identifier],eax
cmp word [edi+8],0
jne invalid_value
mov al,[edi+12]
mov [value_type],al
cmp al,2
1859,10 → 1859,10
mov [value_size],4
mov [size_override],-1
call calculate_expression
cmp word [edi+8],0
jne invalid_value
mov eax,[edi+16]
mov [symbol_identifier],eax
cmp word [edi+8],0
jne invalid_value
mov al,[edi+12]
mov [value_type],al
cmp al,4
1913,10 → 1913,10
mov [value_size],8
mov [size_override],-1
call calculate_expression
cmp word [edi+8],0
jne invalid_value
mov eax,[edi+16]
mov [symbol_identifier],eax
cmp word [edi+8],0
jne invalid_value
mov al,[edi+12]
mov [value_type],al
check_qword_value:
1963,6 → 1963,18
xor edx,edx
movzx eax,al
ret
get_address_word_value:
mov [address_size],2
mov [value_size],2
jmp calculate_address
get_address_dword_value:
mov [address_size],4
mov [value_size],4
jmp calculate_address
get_address_qword_value:
mov [address_size],8
mov [value_size],8
jmp calculate_address
get_address_value:
mov [address_size],0
mov [value_size],8
2093,26 → 2105,32
je special_index_scale
check_index_scale:
or cl,cl
jz address_registers_ok
jz check_immediate_address
cmp cl,1
je address_registers_ok
je check_immediate_address
cmp cl,2
je address_registers_ok
je check_immediate_address
cmp cl,4
je address_registers_ok
je check_immediate_address
cmp cl,8
je address_registers_ok
je check_immediate_address
jmp invalid_address
special_index_scale:
mov bh,bl
dec cl
address_registers_ok:
jmp check_dword_value
check_immediate_address:
mov al,[address_size]
and al,0Fh
cmp al,2
je check_word_value
cmp al,4
je check_dword_value
cmp al,8
je check_qword_value
or al,al
jnz invalid_value
cmp [code_type],64
jne check_dword_value
cmp [address_size],4
je check_dword_value
jmp check_qword_value
calculate_relative_offset:
cmp [value_undefined],0
2131,7 → 2149,8
cmp bl,[labels_type]
jne invalid_use_of_symbol
mov [value_type],0
mov ecx,[symbol_identifier]
mov ecx,[address_symbol]
mov [symbol_identifier],ecx
cmp ecx,[org_symbol]
je relative_offset_ok
mov [value_type],3
/programs/develop/fasm/trunk/fasm.asm
145,7 → 145,7
 
get_sys_colors 1,0
 
mov eax,0
xor eax,eax
mov ebx,50*65536+280
mov ecx,50*65536+250
mov edx,[sc.work]
/programs/develop/fasm/trunk/system.inc
1,5 → 1,5
; flat assembler version 1.60
; Copyright (c) 1999-2005, Tomasz Grysztar
; flat assembler
; Copyright (c) 1999-2006, Tomasz Grysztar
; All rights reserved.
;
; MenuetOS system.inc by VT
/programs/develop/fasm/trunk/version.inc
33,7 → 33,7
; cannot simply be copied and put under another distribution licence
; (including the GNU Public Licence).
 
VERSION_STRING equ "1.67.14"
VERSION_STRING equ "1.67.15"
 
VERSION_MAJOR = 1
VERSION_MINOR = 67
/programs/develop/fasm/trunk/x86_64.inc
3115,7 → 3115,7
jmp_imm_32bit:
cmp [code_type],64
je invalid_operand_size
call get_dword_value
call get_address_dword_value
cmp [code_type],16
jne jmp_imm_32bit_prefix_ok
mov byte [edi],66h
3137,7 → 3137,7
jmp_imm_64bit:
cmp [code_type],64
jne invalid_operand_size
call get_qword_value
call get_address_qword_value
call calculate_jump_offset
mov ecx,edx
cdq
3151,7 → 3151,7
stos word [edi]
jmp instruction_assembled
jmp_imm_16bit:
call get_word_value
call get_address_word_value
cmp [code_type],16
je jmp_imm_16bit_prefix_ok
mov byte [edi],66h
3290,7 → 3290,7
conditional_jump_32bit:
cmp [code_type],64
je invalid_operand_size
call get_dword_value
call get_address_dword_value
cmp [code_type],16
jne conditional_jump_32bit_prefix_ok
mov byte [edi],66h
3314,7 → 3314,7
conditional_jump_64bit:
cmp [code_type],64
jne invalid_operand_size
call get_qword_value
call get_address_qword_value
call calculate_jump_offset
mov ecx,edx
cdq
3328,7 → 3328,7
stos word [edi]
jmp instruction_assembled
conditional_jump_16bit:
call get_word_value
call get_address_word_value
cmp [code_type],16
je conditional_jump_16bit_prefix_ok
mov byte [edi],66h
3392,7 → 3392,7
loop_jump_32bit:
cmp [code_type],64
je invalid_operand_size
call get_dword_value
call get_address_dword_value
cmp [code_type],16
jne loop_jump_32bit_prefix_ok
mov byte [edi],66h
3407,7 → 3407,7
loop_jump_64bit:
cmp [code_type],64
jne invalid_operand_size
call get_qword_value
call get_address_qword_value
call calculate_jump_offset
mov ecx,edx
cdq
3415,7 → 3415,7
jne value_out_of_range
jmp make_loop_jump
loop_jump_16bit:
call get_word_value
call get_address_word_value
cmp [code_type],16
je loop_jump_16bit_prefix_ok
mov byte [edi],66h
6020,8 → 6020,6
cdq
cmp edx,[address_high]
jne value_out_of_range
mov edx,[symbol_identifier]
mov [address_symbol],edx
mov edx,eax
ror ecx,16
mov cl,[value_type]