release 1.42

This commit is contained in:
Tomasz Grysztar 2002-12-05 12:00:00 +00:00
parent c456b1af07
commit 48a9eea84b
10 changed files with 62 additions and 31 deletions

View file

@ -5,7 +5,7 @@
Û ÜßßßßÛ ßßßßÜ Û Û Û
Û ßÜÜÜÜÛÜ ÜÜÜÜÜß Û Û Û
flat assembler 1.41
flat assembler 1.42
Programmer's Manual
@ -118,21 +118,21 @@ compilation summary. It includes the information of how many passes was done,
how much time it took, and how many bytes were written into destination file.
Here is an example of the compilation summary:
flat assembler version 1.41
flat assembler version 1.42
38 passes, 5.3 seconds, 77824 bytes.
In case of error during the compilation process, program will display an error
message. For example, when compiler can't find the input file, it will display
the following message:
flat assembler version 1.41
flat assembler version 1.42
error: source file not found.
If the error is connected with a specific part of source code, the source line
that caused the error will be also displayed. Also placement of this line in
the source is given to help you finding this error, for example:
flat assembler version 1.41
flat assembler version 1.42
example.asm [3]:
mob ax,1
error: illegal instruction.
@ -142,7 +142,7 @@ encountered an unrecognized instruction. When the line that caused error
contains a macroinstruction, also number of erroneous line inside the
macroinstruction is gived:
flat assembler version 1.41
flat assembler version 1.42
example.asm [6] stoschar [2]:
stoschar 7
error: illegal instruction.
@ -1473,7 +1473,7 @@ proceeding, "fnstenv" does not. "fldenv" loads the complete operating
environment from memory into the FPU. "fsave" and "fnsave" store the current
FPU state (operating environment and register stack) at the specified
destination in memory and reinitializes the FPU. "fsave" check for pending
unmasked FPU exceptions before proceeding, verb"fnsave" does not. "frstor"
unmasked FPU exceptions before proceeding, "fnsave" does not. "frstor"
loads the FPU state from the specified memory location. All these instructions
need an operand being a memory location.
"finit" and "fninit" set the FPU operating environment into its default

View file

@ -1,5 +1,5 @@
flat assembler version 1.41
flat assembler version 1.42
Copyright (c) 1999-2002, Tomasz Grysztar.
All rights reserved.

View file

@ -646,8 +646,9 @@ times_directive:
call get_dword_value
cmp [value_type],0
jne invalid_use_of_symbol
or eax,eax
jz zero_times
cmp eax,0
je zero_times
jl negative_times
cmp byte [esi],':'
jne times_argument_ok
inc esi
@ -670,6 +671,12 @@ times_directive:
pop eax
pop [counter_limit] [counter]
jmp instruction_assembled
negative_times:
cmp [error_line],0
jne zero_times
mov eax,[current_line]
mov [error_line],eax
mov [error],invalid_value
zero_times:
call skip_line
jmp instruction_assembled
@ -796,8 +803,9 @@ repeat_directive:
call get_dword_value
cmp [value_type],0
jne invalid_use_of_symbol
or eax,eax
jz zero_repeat
cmp eax,0
je zero_repeat
jl negative_repeat
call allocate_structure_data
mov word [ebx],repeat_directive-assembler
xchg eax,[counter_limit]
@ -824,6 +832,12 @@ repeat_directive:
continue_repeating:
mov esi,[ebx+0Ch]
jmp instruction_assembled
negative_repeat:
cmp [error_line],0
jne zero_repeat
mov eax,[current_line]
mov [error_line],eax
mov [error],invalid_value
zero_repeat:
mov al,[esi]
or al,al
@ -1115,7 +1129,7 @@ data_dwords:
cmp byte [esi],'.'
je invalid_value
call get_word_value
mov dx,ax
push eax
inc esi
lods byte [esi]
cmp al,'('
@ -1129,7 +1143,7 @@ data_dwords:
stos word [edi]
pop eax
mov [value_type],al
mov ax,dx
pop eax
call mark_relocation
stos word [edi]
dword_ok:
@ -1172,7 +1186,7 @@ data_pwords:
cmp byte [esi],'.'
je invalid_value
call get_word_value
mov dx,ax
push eax
inc esi
lods byte [esi]
cmp al,'('
@ -1186,7 +1200,7 @@ data_pwords:
stos dword [edi]
pop eax
mov [value_type],al
mov ax,dx
pop eax
call mark_relocation
stos word [edi]
pword_ok:

View file

@ -242,6 +242,7 @@ fp_sign db ?
fp_format db ?
value_size db ?
forced_size db ?
value_undefined db ?
value_type db ?
address_size db ?
compare_type db ?

View file

@ -782,6 +782,7 @@ get_fp_value:
calculate_expression:
mov [current_offset],edi
mov [value_undefined],0
calculation_loop:
lods byte [esi]
or al,al
@ -848,6 +849,12 @@ calculate_expression:
jmp invalid_expression
expression_calculated:
sub edi,14h
cmp [value_undefined],0
je expression_value_ok
xor eax,eax
mov [edi],eax
mov [edi+4],eax
expression_value_ok:
mov eax,[edi+16]
mov [symbol_identifier],eax
ret
@ -988,6 +995,7 @@ calculate_expression:
jne invalid_value
or [next_pass_needed],-1
mov byte [edi+12],0
or [value_undefined],-1
xor eax,eax
stos dword [edi]
stos dword [edi]
@ -2189,9 +2197,10 @@ get_logical_value:
cmp ah,2
jne invalid_expression
lods dword [esi]
cmp eax,10h
jb return_true
inc esi
cmp eax,0Fh
je reserved_word_used_as_symbol
jb return_true
test byte [eax+8],1
jnz symbol_defined
cmp [current_pass],0

View file

@ -221,6 +221,7 @@ fp_sign db ?
fp_format db ?
value_size db ?
forced_size db ?
value_undefined db ?
value_type db ?
address_size db ?
compare_type db ?

View file

@ -1,5 +1,5 @@
; flat assembler version 1.41
; flat assembler version 1.42
; Copyright (c) 1999-2002, Tomasz Grysztar.
; All rights reserved.
;
@ -33,7 +33,7 @@
; cannot simply be copied and put under another distribution licence
; (including the GNU Public Licence).
VERSION_STRING equ "1.41"
VERSION_STRING equ "1.42"
VERSION_MAJOR = 1
VERSION_MINOR = 41
VERSION_MINOR = 42

View file

@ -256,6 +256,7 @@ fp_sign db ?
fp_format db ?
value_size db ?
forced_size db ?
value_undefined db ?
value_type db ?
address_size db ?
compare_type db ?

View file

@ -4148,7 +4148,10 @@ basic_fpu_instruction:
je basic_fpu_single_streg
or al,al
jz basic_fpu_st0
test ah,110b
jz basic_fpu_streg_st0
xor ah,1
basic_fpu_streg_st0:
shl ah,3
or al,ah
mov [postbyte_register],al
@ -5610,23 +5613,18 @@ fxsave_instruction:
call get_size_operator
cmp al,'['
jne invalid_operand
cmp ah,0
je fxsave_size_ok
call get_address
mov ah,[operand_size]
or ah,ah
jz fxsave_size_ok
mov al,[postbyte_register]
cmp al,10b
jb invalid_operand_size
cmp al,11b
jbe ldmxcsr_size_check
cmp al,111b
jne invalid_operand_size
cmp ah,1
je fxsave_size_ok
jmp invalid_operand_size
ldmxcsr_size_check:
ja invalid_operand_size
cmp ah,4
jne invalid_operand_size
fxsave_size_ok:
call get_address
call store_instruction
jmp instruction_assembled
prefetch_instruction:
@ -7164,7 +7162,7 @@ instructions_6:
db 'fprem1',110101b
dw simple_fpu_instruction-assembler
db 'frstor',4
dw fsave_instruction-assembler
dw fnsave_instruction-assembler
db 'fscale',111101b
dw simple_fpu_instruction-assembler
db 'fstenv',6

View file

@ -1,6 +1,12 @@
Visit http://fasm.sourceforge.net for more information
version 1.42
[05-12-2002]
------------
[+] improved optimization algorithms
[-] more small fixes
version 1.41
[14-11-2002]
------------
@ -9,6 +15,7 @@ version 1.41
[+] added missing syntax options for some FPU and MMX instructions
[+] added defined and used operators
[-] parser algorithms corrected
[-] minor bugs fixed
version 1.40
[28-08-2002]