FASM: fixed by Prohor Nikiforov an issue reported by Vaicheslav97; update to version 1.73.29

git-svn-id: svn://kolibrios.org@9459 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Kirill Lipatov (Leency) 2021-12-22 20:19:48 +00:00
parent 3d99a055b8
commit e167e59b54
48 changed files with 210 additions and 83 deletions

View File

@ -48,7 +48,7 @@
11 Fplay Video * |/kolibrios/media/fplay
#5 **** DEV
54 Flat Assembler |develop/fasm
03 Example.asm |example.asm
27 Example.asm |example.asm
49 Debugger |develop/mtdbg
13 Debug Board |develop/board
09 KPack Archiver |kpack

View File

@ -48,7 +48,7 @@
11 ‚¨¤¥®¯«¥¥à Fplay * |/kolibrios/media/fplay
#5 **** <20> §à ¡®âª 
54 Flat Assembler |develop/fasm
03 Example.asm |example.asm
27 Example.asm |example.asm
09 “¯ ª®¢é¨ª KPack |kpack
49 Žâ« ¤ç¨ª |develop/mtdbg
13 „®áª  ®â« ¤ª¨ |develop/board

View File

@ -2,4 +2,4 @@
@del *.
@rename *.com *.
@del warning.txt
@pause
if not exist appearance ( @pause )

View File

@ -2,4 +2,4 @@
@del *.
@rename *.com *.
@del warning.txt
@pause
if not exist appearance ( @pause )

View File

@ -232,6 +232,13 @@ inline fastcall void ActivateWindow( ECX) //ECX - slot
$int 0x40
}
:void ActivateWindow_Self()
{
proc_info Form;
GetProcessInfo(#Form, SelfInfo);
ActivateWindow(GetProcessSlot(Form.ID));
}
:void RefreshWindow(dword ID_REFRESH,ID_ACTIVE)
{
ActivateWindow(ID_REFRESH);

View File

@ -123,11 +123,4 @@ void EventInstall()
ActivateWindow_Self();
}
void ActivateWindow_Self()
{
proc_info Form;
GetProcessInfo(#Form, SelfInfo);
ActivateWindow(GetProcessSlot(Form.ID));
}
void Operation_Draw_Progress(dword filename) { }

View File

@ -1,6 +1,6 @@
; flat assembler core
; Copyright (c) 1999-2020, Tomasz Grysztar.
; Copyright (c) 1999-2021, Tomasz Grysztar.
; All rights reserved.
assembler:

View File

@ -1,6 +1,6 @@
; flat assembler core
; Copyright (c) 1999-2020, Tomasz Grysztar.
; Copyright (c) 1999-2021, Tomasz Grysztar.
; All rights reserved.
avx_single_source_pd_instruction_er_evex:
@ -1431,9 +1431,9 @@ vzeroupper_instruction:
and [displacement_compression],0
call store_vex_instruction_code
jmp instruction_assembled
vldmxcsr_instruction:
vstmxcsr_instruction:
or [vex_required],2
jmp fxsave_instruction
jmp stmxcsr_instruction
avx_perm2f128_instruction:
or [vex_required],2

View File

@ -1,6 +1,6 @@
; flat assembler core
; Copyright (c) 1999-2020, Tomasz Grysztar.
; Copyright (c) 1999-2021, Tomasz Grysztar.
; All rights reserved.
out_of_memory:

View File

@ -1,6 +1,6 @@
; flat assembler core
; Copyright (c) 1999-2020, Tomasz Grysztar.
; Copyright (c) 1999-2021, Tomasz Grysztar.
; All rights reserved.
calculate_expression:
@ -1875,7 +1875,9 @@ calculate_logical_expression:
jne invalid_value
call get_value_for_comparison
mov bh,[value_sign]
push eax edx [symbol_identifier] ebx ecx
push eax edx
push [symbol_identifier]
push ebx ecx
mov al,[esi]
or al,al
jz logical_number

View File

@ -1,6 +1,6 @@
; flat assembler core
; Copyright (c) 1999-2020, Tomasz Grysztar.
; Copyright (c) 1999-2021, Tomasz Grysztar.
; All rights reserved.
convert_expression:
@ -135,8 +135,11 @@ convert_number:
subexpression_closed:
ret
symbol_value:
cmp [source_start],0
je preprocessor_value
mov eax,[source_start]
test eax,eax
jz preprocessor_value
cmp eax,-1
je invalid_value
push edi esi
lods word [esi]
cmp al,1Ah
@ -192,8 +195,6 @@ convert_number:
ret
preprocessor_value:
dec edi
cmp [hash_tree],0
je invalid_value
lods byte [esi]
cmp al,1Ah
jne invalid_value
@ -202,6 +203,8 @@ convert_number:
mov ch,10b
call get_preprocessor_symbol
jc invalid_value
test edx,edx
jz special_preprocessor_value
push esi
mov esi,[edx+8]
push [current_offset]
@ -209,6 +212,15 @@ convert_number:
pop [current_offset]
pop esi
ret
special_preprocessor_value:
cmp eax,preprocessed_line_value
jne invalid_value
call get_current_line_from_file
mov al,4
stos byte [edi]
mov eax,[ebx+4]
stos dword [edi]
ret
get_number:
xor ebp,ebp

View File

@ -1,6 +1,6 @@
; flat assembler core
; Copyright (c) 1999-2020, Tomasz Grysztar.
; Copyright (c) 1999-2021, Tomasz Grysztar.
; All rights reserved.
formatter:

View File

@ -1,6 +1,6 @@
; flat assembler core
; Copyright (c) 1999-2020, Tomasz Grysztar.
; Copyright (c) 1999-2021, Tomasz Grysztar.
; All rights reserved.
_out_of_memory db 'out of memory',0

View File

@ -1,6 +1,6 @@
; flat assembler core
; Copyright (c) 1999-2020, Tomasz Grysztar.
; Copyright (c) 1999-2021, Tomasz Grysztar.
; All rights reserved.
parser:

View File

@ -1,6 +1,6 @@
; flat assembler core
; Copyright (c) 1999-2020, Tomasz Grysztar.
; Copyright (c) 1999-2021, Tomasz Grysztar.
; All rights reserved.
preprocessor:
@ -686,6 +686,8 @@ preprocess_line:
mov ch,10b
call get_preprocessor_symbol
jc struc_name_ok
test edx,edx
jz reserved_word_used_as_symbol
mov ecx,[edx+12]
add ecx,3
lea ebx,[edi+ecx]
@ -745,6 +747,8 @@ preprocess_line:
inc esi
jmp preprocess_instruction
symbolic_constant_in_label:
test edx,edx
jz reserved_word_used_as_symbol
mov ebx,[edx+8]
mov ecx,[edx+12]
add ecx,ebx
@ -806,7 +810,32 @@ get_preprocessor_symbol:
push ebp edi esi
mov ebp,ecx
shl ebp,22
mov al,ch
and al,11b
movzx ecx,cl
cmp al,10b
jne no_preprocessor_special_symbol
cmp cl,4
jbe no_preprocessor_special_symbol
mov ax,'__'
cmp ax,[esi]
jne no_preprocessor_special_symbol
cmp ax,[esi+ecx-2]
jne no_preprocessor_special_symbol
add esi,2
sub ecx,4
push ebp
mov edi,preprocessor_special_symbols
call get_directive
pop ebp
jc preprocessor_special_symbol_not_recognized
add esi,2
xor edx,edx
jmp preprocessor_symbol_found
preprocessor_special_symbol_not_recognized:
add ecx,4
sub esi,2
no_preprocessor_special_symbol:
mov ebx,hash_tree
mov edi,10
follow_hashes_roots:
@ -1333,6 +1362,8 @@ restore_equ_constant:
mov cl,al
call get_preprocessor_symbol
jc no_symbol_to_restore
test edx,edx
jz symbol_restored
mov dword [edx+4],0
jmp symbol_restored
no_symbol_to_restore:
@ -1383,6 +1414,8 @@ process_equ_constants:
jc no_replacing
mov [current_section],edi
replace_symbolic_constant:
test edx,edx
jz replace_special_symbolic_constant
mov ecx,[edx+12]
mov edx,[edx+8]
xchg esi,edx
@ -1451,6 +1484,53 @@ process_equ_constants:
stos word [edi]
call move_data
jmp process_after_replaced
replace_special_symbolic_constant:
jmp near eax
preprocessed_file_value:
call get_current_line_from_file
test ebx,ebx
jz process_after_replaced
push esi edi
mov esi,[ebx]
mov edi,esi
xor al,al
or ecx,-1
repne scas byte [edi]
add ecx,2
neg ecx
pop edi
lea eax,[edi+1+4+ecx]
cmp eax,[memory_end]
ja out_of_memory
mov al,22h
stos byte [edi]
mov eax,ecx
stos dword [edi]
rep movs byte [edi],[esi]
pop esi
jmp process_after_replaced
preprocessed_line_value:
call get_current_line_from_file
test ebx,ebx
jz process_after_replaced
lea eax,[edi+1+4+20]
cmp eax,[memory_end]
ja out_of_memory
mov ecx,[ebx+4]
call store_number_symbol
jmp process_after_replaced
get_current_line_from_file:
mov ebx,[current_line]
find_line_from_file:
test ebx,ebx
jz line_from_file_found
test byte [ebx+7],80h
jz line_from_file_found
mov ebx,[ebx+8]
jmp find_line_from_file
line_from_file_found:
ret
process_macro_operators:
xor dl,dl
mov ebp,edi
@ -1809,7 +1889,9 @@ use_macro:
pop [free_additional_memory]
jmp line_preprocessed
use_instant_macro:
push edi [current_line] esi
push edi
push [current_line]
push esi
mov eax,[error_line]
mov [current_line],eax
mov [macro_line],eax
@ -2023,6 +2105,8 @@ do_irp:
mov ch,10b
call get_preprocessor_symbol
jc instant_macro_finish
test edx,edx
jz invalid_use_of_symbol
push edx
mark_variable_value:
inc [counter_limit]

View File

@ -1,6 +1,6 @@
; flat assembler core
; Copyright (c) 1999-2020, Tomasz Grysztar.
; Copyright (c) 1999-2021, Tomasz Grysztar.
; All rights reserved.
dump_symbols:

View File

@ -1,6 +1,6 @@
; flat assembler core
; Copyright (c) 1999-2020, Tomasz Grysztar.
; Copyright (c) 1999-2021, Tomasz Grysztar.
; All rights reserved.
include_variable db 'INCLUDE',0
@ -48,6 +48,13 @@ macro_directives:
dw reverse_block-directive_handler
db 0
preprocessor_special_symbols:
db 4,'file'
dw preprocessed_file_value-directive_handler
db 4,'line'
dw preprocessed_line_value-directive_handler
db 0
operators:
db 1,'+',80h
db 1,'-',81h
@ -457,7 +464,7 @@ instructions:
dw instructions_14-instructions,(instructions_15-instructions_14)/(14+3)
dw instructions_15-instructions,(instructions_16-instructions_15)/(15+3)
dw instructions_16-instructions,(instructions_17-instructions_16)/(16+3)
dw instructions_17-instructions,(instructions_end-instructions_17)/(16+3)
dw instructions_17-instructions,(instructions_end-instructions_17)/(17+3)
instructions_2:
db 'bt',4
@ -2811,7 +2818,7 @@ instructions_8:
db 'vfmsubss',6Eh
dw fma4_instruction_ss-instruction_handler
db 'vldmxcsr',10b
dw vldmxcsr_instruction-instruction_handler
dw vstmxcsr_instruction-instruction_handler
db 'vmlaunch',0C2h
dw simple_instruction_0f_01-instruction_handler
db 'vmovddup',12h
@ -3073,7 +3080,7 @@ instructions_8:
db 'vrsqrtss',52h
dw avx_ss_instruction_noevex-instruction_handler
db 'vstmxcsr',11b
dw vldmxcsr_instruction-instruction_handler
dw vstmxcsr_instruction-instruction_handler
db 'vucomisd',2Eh
dw avx_comisd_instruction-instruction_handler
db 'vucomiss',2Eh

View File

@ -1,6 +1,6 @@
; flat assembler core variables
; Copyright (c) 1999-2020, Tomasz Grysztar.
; Copyright (c) 1999-2021, Tomasz Grysztar.
; All rights reserved.
; Variables which have to be set up by interface:

View File

@ -1,6 +1,6 @@
; flat assembler version 1.73
; Copyright (c) 1999-2020, Tomasz Grysztar.
; Copyright (c) 1999-2021, Tomasz Grysztar.
; All rights reserved.
;
; This programs is free for commercial and non-commercial use as long as
@ -33,7 +33,7 @@
; cannot simply be copied and put under another distribution licence
; (including the GNU Public Licence).
VERSION_STRING equ "1.73.24"
VERSION_STRING equ "1.73.29"
VERSION_MAJOR = 1
VERSION_MINOR = 73

View File

@ -1,6 +1,6 @@
; flat assembler core
; Copyright (c) 1999-2020, Tomasz Grysztar.
; Copyright (c) 1999-2021, Tomasz Grysztar.
; All rights reserved.
simple_instruction_except64:
@ -228,7 +228,9 @@ basic_instruction:
mov ecx,edx
cdq
cmp ecx,edx
jne value_out_of_range
je simm32_range_ok
call recoverable_overflow
simm32_range_ok:
cmp [value_type],4
jne get_simm32_ok
mov [value_type],2
@ -468,9 +470,7 @@ mov_instruction:
jnz mov_mem_address16_al
test ch,44h
jnz mov_mem_address32_al
test ch,88h
jnz mov_mem_address64_al
or ch,ch
test ch,not 88h
jnz invalid_address_size
call check_mov_address64
cmp al,0
@ -504,6 +504,8 @@ mov_instruction:
check_mov_address64:
cmp [code_type],64
jne no_address64
test ch,88h
jnz address64_required
mov eax,[address_high]
or eax,eax
jz no_address64
@ -517,6 +519,8 @@ mov_instruction:
mov al,-1
ret
no_address64:
test ch,08h
jnz invalid_address_size
xor al,al
ret
mov_mem_address64_al:
@ -531,9 +535,7 @@ mov_instruction:
jnz mov_mem_address16_ax
test ch,44h
jnz mov_mem_address32_ax
test ch,88h
jnz mov_mem_address64_ax
or ch,ch
test ch,not 88h
jnz invalid_address_size
call check_mov_address64
cmp al,0
@ -733,9 +735,7 @@ mov_instruction:
jnz mov_al_mem_address16
test ch,44h
jnz mov_al_mem_address32
test ch,88h
jnz mov_al_mem_address64
or ch,ch
test ch,not 88h
jnz invalid_address_size
call check_mov_address64
cmp al,0
@ -764,9 +764,7 @@ mov_instruction:
jnz mov_ax_mem_address16
test ch,44h
jnz mov_ax_mem_address32
test ch,88h
jnz mov_ax_mem_address64
or ch,ch
test ch,not 88h
jnz invalid_address_size
call check_mov_address64
cmp al,0
@ -3031,7 +3029,8 @@ jmp_instruction:
cmp al,'('
jne invalid_operand
mov al,[value_type]
push eax [symbol_identifier]
push eax
push [symbol_identifier]
cmp byte [esi],'.'
je invalid_value
mov al,[operand_size]
@ -3052,7 +3051,8 @@ jmp_instruction:
call mark_relocation
stos word [edi]
jmp_far_segment:
pop [symbol_identifier] eax
pop [symbol_identifier]
pop eax
mov [value_type],al
pop eax
call mark_relocation
@ -6400,7 +6400,8 @@ bndstx_instruction:
cmp al,'('
jne invalid_operand
mov al,[address_sign]
push eax ebx ecx edx [address_symbol]
push eax ebx ecx edx
push [address_symbol]
call get_address_component
lods byte [esi]
cmp al,']'
@ -6410,7 +6411,8 @@ bndstx_instruction:
or edx,[address_high]
jnz invalid_address
mov [address_register],bh
pop [address_symbol] edx ecx ebx eax
pop [address_symbol]
pop edx ecx ebx eax
mov [address_sign],al
or bl,bl
jz mib_place_index
@ -7314,9 +7316,9 @@ store_instruction:
sub eax,[current_offset]
add eax,5
sub edx,eax
jno @f
jno address_relative_ok
call recoverable_overflow
@@:
address_relative_ok:
mov al,101b
mov cl,[postbyte_register]
shl cl,3

View File

@ -1,6 +1,6 @@
; flat assembler source
; Copyright (c) 1999-2020, Tomasz Grysztar.
; Copyright (c) 1999-2021, Tomasz Grysztar.
; All rights reserved.
; KolibriOS port by KolibriOS Team
@ -122,7 +122,7 @@ START: ; Start of execution
mcall SF_SYS_MISC,SSF_MEM_ALLOC,$1000
mov [file_io_notify.flags],eax
call LoadLibraries
unresolved_proc_termination: call LoadLibraries
mcall SF_SET_EVENTS_MASK,EVM_MOUSE_FILTER or EVM_MOUSE or EVM_BUTTON or EVM_KEY or EVM_REDRAW;0x80000027 ; filter events: 80000000h - don`t receive mouse events if wnd nonactive , 7 - allowed events: redraw,keypresses, button presses
invoke init_checkbox,ch1_dbg

View File

@ -6,6 +6,8 @@ ID_OPENDLG_BTN = 5
NORMAL_MODE = 8
CONSOLE_MODE = 32
MAGIC1 = 6*(text.line_size-1)+14
MAGIC2 = (14*3+16)/3+1
APP_MEMORY = 0x00800000

View File

@ -1,10 +1,10 @@
; flat assembler
; Copyright (c) 1999-2020, Tomasz Grysztar
; Copyright (c) 1999-2021, Tomasz Grysztar
; All rights reserved.
init_memory:
; mov ecx, 16*1024*1024
; mov ecx, 16*1024*1024
;
; allocate_memory:
mcall SF_SYSTEM, SSF_GET_FREE_RAM
@ -33,8 +33,12 @@ exit_program:
cmp [_mode],NORMAL_MODE
jne @f
mcall SF_SYS_MISC, SSF_MEM_FREE, [memblock]
mov edi, file_IO_slots
mov ecx, (file_IO_end-file_IO_slots)/4
or eax, -1
rep stosd
mov esp,[processing_esp]
jmp still
ret;jmp still
@@:
or eax,-1
mcall
@ -287,7 +291,7 @@ get_environment_variable:
cld
rep movsb
.finish:
; stc
; stc
retn
alloc_handle:
@ -412,7 +416,7 @@ make_fullpaths:
loopnz copy_edxpath
mov esi,path ; open
; DEBUGF " '%s'",esi
; DEBUGF " '%s'",esi
mov edi,fullpath_open
cld
newc1:
@ -422,10 +426,10 @@ make_fullpaths:
mov esi,[esp]
cmp byte[esi],'/'
je abs_path
je absolute_path
cmp byte[esi],'\'
jne @f
abs_path:
jne @F
absolute_path:
mov edi,fullpath_open
@@:

View File

@ -2,20 +2,14 @@
include 'lang.inc'
if lang eq ru
text db ' ‚å” ©«:','‚ëå” ©«:',' <20>ãâì:'
.line_size = ($-text)/3
s_compile db 'Š®¬¯¨«.'
s_run db ' <20>ã᪠'
s_debug db 'Žâ« ¤ª '
s_dbgdescr db '‘®§¤ ¢ âì ®â« ¤®ç­ãî ¨­ä®à¬ æ¨î',0
else
text db ' InFile:','OutFile:',' Path:'
.line_size = ($-text)/3
s_compile db 'COMPILE'
s_run db ' RUN '
s_debug db ' DEBUG '
s_dbgdescr db 'Generate debug information',0
end if
text db ' ‚å” ©«:','‚ëå” ©«:',' <20>ãâì:'
.line_size = ($-text)/3
s_compile db 'Š®¬¯¨«.'
s_run db ' <20>ã᪠'
s_debug db 'Žâ« ¤ª '
s_dbgdescr db '‘®§¤ ¢ âì ®â« ¤®ç­ãî ¨­ä®à¬ æ¨î',0
sz_EPnotFound db 'Not found entry point to ',0
sizeof.sz_EPnotFound = $-sz_EPnotFound
@ -26,4 +20,24 @@ sizeof.sz_cantLL = $-sz_cantLL
sz_system_error db 'System error: ',0
sizeof.sz_system_error = $-sz_system_error
else
text db ' InFile:','OutFile:',' Path:'
.line_size = ($-text)/3
s_compile db 'COMPILE'
s_run db ' RUN '
s_debug db ' DEBUG '
s_dbgdescr db 'Generate debug information',0
sz_EPnotFound db 'Not found entry point to ',0
sizeof.sz_EPnotFound = $-sz_EPnotFound
sz_cantLL db 'Can not load library ',0
sizeof.sz_cantLL = $-sz_cantLL
sz_system_error db 'System error: ',0
sizeof.sz_system_error = $-sz_system_error
end if

View File

@ -152,7 +152,7 @@ draw_window:
mcall SF_DRAW_RECT, <2,WIN_W-4>, <2,WIN_H-BOT_PANEL_H-2>, 0x202020
mcall SF_DRAW_RECT, <2,WIN_W-4>, <WIN_H-BOT_PANEL_H-2,BOT_PANEL_H>, 0x4B4B4B
mcall SF_DRAW_TEXT, <30,27>, 0x91FFFfff, TEXT_WTITLE
mcall SF_DRAW_TEXT, <30,21>, 0x91FFFfff, TEXT_WTITLE
mcall SF_DRAW_TEXT, <55,70>, 0x90FFFfff, TEXT_RDSAVE1
mcall SF_DRAW_TEXT, <55,86>, 0x90FFFfff, TEXT_RDSAVE2
mcall SF_DRAW_TEXT, <WIN_W-23,5>, 0x81FFFfff, TEXT_CANCEL
@ -167,7 +167,7 @@ draw_window:
call draw_checkbox_flag
stdcall EndButton, 20, 0x4E91C5, HOME_BUTTON_ID, TEXT_KERNEL, TEXT_HOME
stdcall EndButton, 160, 0x55C891, REBOOT_BUTTON_ID, TEXT_REBOOT, TEXT_ENTER
stdcall EndButton, 160, 0x41C166, REBOOT_BUTTON_ID, TEXT_REBOOT, TEXT_ENTER
stdcall EndButton, 300, 0xC75C54, POWEROFF_BUTTON_ID, TEXT_OFF, TEXT_END
mcall SF_REDRAW,SSF_END_DRAW
@ -178,7 +178,7 @@ proc EndButton x, bgcol, id, but_text, hotkey_text
BUTW = 116
mov ebx,[x]
sub ebx,3
mcall SF_DRAW_RECT, <ebx,BUTW+6>, <BUTY-3,43+6>, 0x202020
mcall SF_DRAW_RECT, <ebx,BUTW+7>, <BUTY-3,43+6>, 0x202020
mcall SF_DEFINE_BUTTON, <[x],BUTW>, <BUTY,43-1>, [id], [bgcol]
; -strlen(but_text)*8 + BUTW / 2 + x, BUTY+8
stdcall string.length, [but_text]