mirror of
https://github.com/tgrysztar/fasm
synced 2026-08-26 00:23:06 -04:00
release 1.42
This commit is contained in:
parent
c456b1af07
commit
48a9eea84b
10 changed files with 62 additions and 31 deletions
12
FASM.TXT
12
FASM.TXT
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
|
||||
flat assembler version 1.41
|
||||
flat assembler version 1.42
|
||||
Copyright (c) 1999-2002, Tomasz Grysztar.
|
||||
All rights reserved.
|
||||
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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 ?
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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 ?
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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 ?
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue