forked from KolibriOS/kolibrios
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:
parent
3d99a055b8
commit
e167e59b54
@ -48,7 +48,7 @@
|
|||||||
11 Fplay Video * |/kolibrios/media/fplay
|
11 Fplay Video * |/kolibrios/media/fplay
|
||||||
#5 **** DEV
|
#5 **** DEV
|
||||||
54 Flat Assembler |develop/fasm
|
54 Flat Assembler |develop/fasm
|
||||||
03 Example.asm |example.asm
|
27 Example.asm |example.asm
|
||||||
49 Debugger |develop/mtdbg
|
49 Debugger |develop/mtdbg
|
||||||
13 Debug Board |develop/board
|
13 Debug Board |develop/board
|
||||||
09 KPack Archiver |kpack
|
09 KPack Archiver |kpack
|
||||||
|
@ -48,7 +48,7 @@
|
|||||||
11 ‚¨¤¥®¯«¥¥à Fplay * |/kolibrios/media/fplay
|
11 ‚¨¤¥®¯«¥¥à Fplay * |/kolibrios/media/fplay
|
||||||
#5 **** <20> §à ¡®âª
|
#5 **** <20> §à ¡®âª
|
||||||
54 Flat Assembler |develop/fasm
|
54 Flat Assembler |develop/fasm
|
||||||
03 Example.asm |example.asm
|
27 Example.asm |example.asm
|
||||||
09 “¯ ª®¢é¨ª KPack |kpack
|
09 “¯ ª®¢é¨ª KPack |kpack
|
||||||
49 Žâ« ¤ç¨ª |develop/mtdbg
|
49 Žâ« ¤ç¨ª |develop/mtdbg
|
||||||
13 „®áª ®â« ¤ª¨ |develop/board
|
13 „®áª ®â« ¤ª¨ |develop/board
|
||||||
|
@ -2,4 +2,4 @@
|
|||||||
@del *.
|
@del *.
|
||||||
@rename *.com *.
|
@rename *.com *.
|
||||||
@del warning.txt
|
@del warning.txt
|
||||||
@pause
|
if not exist appearance ( @pause )
|
||||||
|
@ -2,4 +2,4 @@
|
|||||||
@del *.
|
@del *.
|
||||||
@rename *.com *.
|
@rename *.com *.
|
||||||
@del warning.txt
|
@del warning.txt
|
||||||
@pause
|
if not exist appearance ( @pause )
|
@ -232,6 +232,13 @@ inline fastcall void ActivateWindow( ECX) //ECX - slot
|
|||||||
$int 0x40
|
$int 0x40
|
||||||
}
|
}
|
||||||
|
|
||||||
|
:void ActivateWindow_Self()
|
||||||
|
{
|
||||||
|
proc_info Form;
|
||||||
|
GetProcessInfo(#Form, SelfInfo);
|
||||||
|
ActivateWindow(GetProcessSlot(Form.ID));
|
||||||
|
}
|
||||||
|
|
||||||
:void RefreshWindow(dword ID_REFRESH,ID_ACTIVE)
|
:void RefreshWindow(dword ID_REFRESH,ID_ACTIVE)
|
||||||
{
|
{
|
||||||
ActivateWindow(ID_REFRESH);
|
ActivateWindow(ID_REFRESH);
|
||||||
|
@ -123,11 +123,4 @@ void EventInstall()
|
|||||||
ActivateWindow_Self();
|
ActivateWindow_Self();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ActivateWindow_Self()
|
|
||||||
{
|
|
||||||
proc_info Form;
|
|
||||||
GetProcessInfo(#Form, SelfInfo);
|
|
||||||
ActivateWindow(GetProcessSlot(Form.ID));
|
|
||||||
}
|
|
||||||
|
|
||||||
void Operation_Draw_Progress(dword filename) { }
|
void Operation_Draw_Progress(dword filename) { }
|
@ -1,6 +1,6 @@
|
|||||||
|
|
||||||
; flat assembler core
|
; flat assembler core
|
||||||
; Copyright (c) 1999-2020, Tomasz Grysztar.
|
; Copyright (c) 1999-2021, Tomasz Grysztar.
|
||||||
; All rights reserved.
|
; All rights reserved.
|
||||||
|
|
||||||
assembler:
|
assembler:
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
|
|
||||||
; flat assembler core
|
; flat assembler core
|
||||||
; Copyright (c) 1999-2020, Tomasz Grysztar.
|
; Copyright (c) 1999-2021, Tomasz Grysztar.
|
||||||
; All rights reserved.
|
; All rights reserved.
|
||||||
|
|
||||||
avx_single_source_pd_instruction_er_evex:
|
avx_single_source_pd_instruction_er_evex:
|
||||||
@ -1431,9 +1431,9 @@ vzeroupper_instruction:
|
|||||||
and [displacement_compression],0
|
and [displacement_compression],0
|
||||||
call store_vex_instruction_code
|
call store_vex_instruction_code
|
||||||
jmp instruction_assembled
|
jmp instruction_assembled
|
||||||
vldmxcsr_instruction:
|
vstmxcsr_instruction:
|
||||||
or [vex_required],2
|
or [vex_required],2
|
||||||
jmp fxsave_instruction
|
jmp stmxcsr_instruction
|
||||||
|
|
||||||
avx_perm2f128_instruction:
|
avx_perm2f128_instruction:
|
||||||
or [vex_required],2
|
or [vex_required],2
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
|
|
||||||
; flat assembler core
|
; flat assembler core
|
||||||
; Copyright (c) 1999-2020, Tomasz Grysztar.
|
; Copyright (c) 1999-2021, Tomasz Grysztar.
|
||||||
; All rights reserved.
|
; All rights reserved.
|
||||||
|
|
||||||
out_of_memory:
|
out_of_memory:
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
|
|
||||||
; flat assembler core
|
; flat assembler core
|
||||||
; Copyright (c) 1999-2020, Tomasz Grysztar.
|
; Copyright (c) 1999-2021, Tomasz Grysztar.
|
||||||
; All rights reserved.
|
; All rights reserved.
|
||||||
|
|
||||||
calculate_expression:
|
calculate_expression:
|
||||||
@ -1875,7 +1875,9 @@ calculate_logical_expression:
|
|||||||
jne invalid_value
|
jne invalid_value
|
||||||
call get_value_for_comparison
|
call get_value_for_comparison
|
||||||
mov bh,[value_sign]
|
mov bh,[value_sign]
|
||||||
push eax edx [symbol_identifier] ebx ecx
|
push eax edx
|
||||||
|
push [symbol_identifier]
|
||||||
|
push ebx ecx
|
||||||
mov al,[esi]
|
mov al,[esi]
|
||||||
or al,al
|
or al,al
|
||||||
jz logical_number
|
jz logical_number
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
|
|
||||||
; flat assembler core
|
; flat assembler core
|
||||||
; Copyright (c) 1999-2020, Tomasz Grysztar.
|
; Copyright (c) 1999-2021, Tomasz Grysztar.
|
||||||
; All rights reserved.
|
; All rights reserved.
|
||||||
|
|
||||||
convert_expression:
|
convert_expression:
|
||||||
@ -135,8 +135,11 @@ convert_number:
|
|||||||
subexpression_closed:
|
subexpression_closed:
|
||||||
ret
|
ret
|
||||||
symbol_value:
|
symbol_value:
|
||||||
cmp [source_start],0
|
mov eax,[source_start]
|
||||||
je preprocessor_value
|
test eax,eax
|
||||||
|
jz preprocessor_value
|
||||||
|
cmp eax,-1
|
||||||
|
je invalid_value
|
||||||
push edi esi
|
push edi esi
|
||||||
lods word [esi]
|
lods word [esi]
|
||||||
cmp al,1Ah
|
cmp al,1Ah
|
||||||
@ -192,8 +195,6 @@ convert_number:
|
|||||||
ret
|
ret
|
||||||
preprocessor_value:
|
preprocessor_value:
|
||||||
dec edi
|
dec edi
|
||||||
cmp [hash_tree],0
|
|
||||||
je invalid_value
|
|
||||||
lods byte [esi]
|
lods byte [esi]
|
||||||
cmp al,1Ah
|
cmp al,1Ah
|
||||||
jne invalid_value
|
jne invalid_value
|
||||||
@ -202,6 +203,8 @@ convert_number:
|
|||||||
mov ch,10b
|
mov ch,10b
|
||||||
call get_preprocessor_symbol
|
call get_preprocessor_symbol
|
||||||
jc invalid_value
|
jc invalid_value
|
||||||
|
test edx,edx
|
||||||
|
jz special_preprocessor_value
|
||||||
push esi
|
push esi
|
||||||
mov esi,[edx+8]
|
mov esi,[edx+8]
|
||||||
push [current_offset]
|
push [current_offset]
|
||||||
@ -209,6 +212,15 @@ convert_number:
|
|||||||
pop [current_offset]
|
pop [current_offset]
|
||||||
pop esi
|
pop esi
|
||||||
ret
|
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:
|
get_number:
|
||||||
xor ebp,ebp
|
xor ebp,ebp
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
|
|
||||||
; flat assembler core
|
; flat assembler core
|
||||||
; Copyright (c) 1999-2020, Tomasz Grysztar.
|
; Copyright (c) 1999-2021, Tomasz Grysztar.
|
||||||
; All rights reserved.
|
; All rights reserved.
|
||||||
|
|
||||||
formatter:
|
formatter:
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
|
|
||||||
; flat assembler core
|
; flat assembler core
|
||||||
; Copyright (c) 1999-2020, Tomasz Grysztar.
|
; Copyright (c) 1999-2021, Tomasz Grysztar.
|
||||||
; All rights reserved.
|
; All rights reserved.
|
||||||
|
|
||||||
_out_of_memory db 'out of memory',0
|
_out_of_memory db 'out of memory',0
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
|
|
||||||
; flat assembler core
|
; flat assembler core
|
||||||
; Copyright (c) 1999-2020, Tomasz Grysztar.
|
; Copyright (c) 1999-2021, Tomasz Grysztar.
|
||||||
; All rights reserved.
|
; All rights reserved.
|
||||||
|
|
||||||
parser:
|
parser:
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
|
|
||||||
; flat assembler core
|
; flat assembler core
|
||||||
; Copyright (c) 1999-2020, Tomasz Grysztar.
|
; Copyright (c) 1999-2021, Tomasz Grysztar.
|
||||||
; All rights reserved.
|
; All rights reserved.
|
||||||
|
|
||||||
preprocessor:
|
preprocessor:
|
||||||
@ -686,6 +686,8 @@ preprocess_line:
|
|||||||
mov ch,10b
|
mov ch,10b
|
||||||
call get_preprocessor_symbol
|
call get_preprocessor_symbol
|
||||||
jc struc_name_ok
|
jc struc_name_ok
|
||||||
|
test edx,edx
|
||||||
|
jz reserved_word_used_as_symbol
|
||||||
mov ecx,[edx+12]
|
mov ecx,[edx+12]
|
||||||
add ecx,3
|
add ecx,3
|
||||||
lea ebx,[edi+ecx]
|
lea ebx,[edi+ecx]
|
||||||
@ -745,6 +747,8 @@ preprocess_line:
|
|||||||
inc esi
|
inc esi
|
||||||
jmp preprocess_instruction
|
jmp preprocess_instruction
|
||||||
symbolic_constant_in_label:
|
symbolic_constant_in_label:
|
||||||
|
test edx,edx
|
||||||
|
jz reserved_word_used_as_symbol
|
||||||
mov ebx,[edx+8]
|
mov ebx,[edx+8]
|
||||||
mov ecx,[edx+12]
|
mov ecx,[edx+12]
|
||||||
add ecx,ebx
|
add ecx,ebx
|
||||||
@ -806,7 +810,32 @@ get_preprocessor_symbol:
|
|||||||
push ebp edi esi
|
push ebp edi esi
|
||||||
mov ebp,ecx
|
mov ebp,ecx
|
||||||
shl ebp,22
|
shl ebp,22
|
||||||
|
mov al,ch
|
||||||
|
and al,11b
|
||||||
movzx ecx,cl
|
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 ebx,hash_tree
|
||||||
mov edi,10
|
mov edi,10
|
||||||
follow_hashes_roots:
|
follow_hashes_roots:
|
||||||
@ -1333,6 +1362,8 @@ restore_equ_constant:
|
|||||||
mov cl,al
|
mov cl,al
|
||||||
call get_preprocessor_symbol
|
call get_preprocessor_symbol
|
||||||
jc no_symbol_to_restore
|
jc no_symbol_to_restore
|
||||||
|
test edx,edx
|
||||||
|
jz symbol_restored
|
||||||
mov dword [edx+4],0
|
mov dword [edx+4],0
|
||||||
jmp symbol_restored
|
jmp symbol_restored
|
||||||
no_symbol_to_restore:
|
no_symbol_to_restore:
|
||||||
@ -1383,6 +1414,8 @@ process_equ_constants:
|
|||||||
jc no_replacing
|
jc no_replacing
|
||||||
mov [current_section],edi
|
mov [current_section],edi
|
||||||
replace_symbolic_constant:
|
replace_symbolic_constant:
|
||||||
|
test edx,edx
|
||||||
|
jz replace_special_symbolic_constant
|
||||||
mov ecx,[edx+12]
|
mov ecx,[edx+12]
|
||||||
mov edx,[edx+8]
|
mov edx,[edx+8]
|
||||||
xchg esi,edx
|
xchg esi,edx
|
||||||
@ -1451,6 +1484,53 @@ process_equ_constants:
|
|||||||
stos word [edi]
|
stos word [edi]
|
||||||
call move_data
|
call move_data
|
||||||
jmp process_after_replaced
|
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:
|
process_macro_operators:
|
||||||
xor dl,dl
|
xor dl,dl
|
||||||
mov ebp,edi
|
mov ebp,edi
|
||||||
@ -1809,7 +1889,9 @@ use_macro:
|
|||||||
pop [free_additional_memory]
|
pop [free_additional_memory]
|
||||||
jmp line_preprocessed
|
jmp line_preprocessed
|
||||||
use_instant_macro:
|
use_instant_macro:
|
||||||
push edi [current_line] esi
|
push edi
|
||||||
|
push [current_line]
|
||||||
|
push esi
|
||||||
mov eax,[error_line]
|
mov eax,[error_line]
|
||||||
mov [current_line],eax
|
mov [current_line],eax
|
||||||
mov [macro_line],eax
|
mov [macro_line],eax
|
||||||
@ -2023,6 +2105,8 @@ do_irp:
|
|||||||
mov ch,10b
|
mov ch,10b
|
||||||
call get_preprocessor_symbol
|
call get_preprocessor_symbol
|
||||||
jc instant_macro_finish
|
jc instant_macro_finish
|
||||||
|
test edx,edx
|
||||||
|
jz invalid_use_of_symbol
|
||||||
push edx
|
push edx
|
||||||
mark_variable_value:
|
mark_variable_value:
|
||||||
inc [counter_limit]
|
inc [counter_limit]
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
|
|
||||||
; flat assembler core
|
; flat assembler core
|
||||||
; Copyright (c) 1999-2020, Tomasz Grysztar.
|
; Copyright (c) 1999-2021, Tomasz Grysztar.
|
||||||
; All rights reserved.
|
; All rights reserved.
|
||||||
|
|
||||||
dump_symbols:
|
dump_symbols:
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
|
|
||||||
; flat assembler core
|
; flat assembler core
|
||||||
; Copyright (c) 1999-2020, Tomasz Grysztar.
|
; Copyright (c) 1999-2021, Tomasz Grysztar.
|
||||||
; All rights reserved.
|
; All rights reserved.
|
||||||
|
|
||||||
include_variable db 'INCLUDE',0
|
include_variable db 'INCLUDE',0
|
||||||
@ -48,6 +48,13 @@ macro_directives:
|
|||||||
dw reverse_block-directive_handler
|
dw reverse_block-directive_handler
|
||||||
db 0
|
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:
|
operators:
|
||||||
db 1,'+',80h
|
db 1,'+',80h
|
||||||
db 1,'-',81h
|
db 1,'-',81h
|
||||||
@ -457,7 +464,7 @@ instructions:
|
|||||||
dw instructions_14-instructions,(instructions_15-instructions_14)/(14+3)
|
dw instructions_14-instructions,(instructions_15-instructions_14)/(14+3)
|
||||||
dw instructions_15-instructions,(instructions_16-instructions_15)/(15+3)
|
dw instructions_15-instructions,(instructions_16-instructions_15)/(15+3)
|
||||||
dw instructions_16-instructions,(instructions_17-instructions_16)/(16+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:
|
instructions_2:
|
||||||
db 'bt',4
|
db 'bt',4
|
||||||
@ -2811,7 +2818,7 @@ instructions_8:
|
|||||||
db 'vfmsubss',6Eh
|
db 'vfmsubss',6Eh
|
||||||
dw fma4_instruction_ss-instruction_handler
|
dw fma4_instruction_ss-instruction_handler
|
||||||
db 'vldmxcsr',10b
|
db 'vldmxcsr',10b
|
||||||
dw vldmxcsr_instruction-instruction_handler
|
dw vstmxcsr_instruction-instruction_handler
|
||||||
db 'vmlaunch',0C2h
|
db 'vmlaunch',0C2h
|
||||||
dw simple_instruction_0f_01-instruction_handler
|
dw simple_instruction_0f_01-instruction_handler
|
||||||
db 'vmovddup',12h
|
db 'vmovddup',12h
|
||||||
@ -3073,7 +3080,7 @@ instructions_8:
|
|||||||
db 'vrsqrtss',52h
|
db 'vrsqrtss',52h
|
||||||
dw avx_ss_instruction_noevex-instruction_handler
|
dw avx_ss_instruction_noevex-instruction_handler
|
||||||
db 'vstmxcsr',11b
|
db 'vstmxcsr',11b
|
||||||
dw vldmxcsr_instruction-instruction_handler
|
dw vstmxcsr_instruction-instruction_handler
|
||||||
db 'vucomisd',2Eh
|
db 'vucomisd',2Eh
|
||||||
dw avx_comisd_instruction-instruction_handler
|
dw avx_comisd_instruction-instruction_handler
|
||||||
db 'vucomiss',2Eh
|
db 'vucomiss',2Eh
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
|
|
||||||
; flat assembler core variables
|
; flat assembler core variables
|
||||||
; Copyright (c) 1999-2020, Tomasz Grysztar.
|
; Copyright (c) 1999-2021, Tomasz Grysztar.
|
||||||
; All rights reserved.
|
; All rights reserved.
|
||||||
|
|
||||||
; Variables which have to be set up by interface:
|
; Variables which have to be set up by interface:
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
|
|
||||||
; flat assembler version 1.73
|
; flat assembler version 1.73
|
||||||
; Copyright (c) 1999-2020, Tomasz Grysztar.
|
; Copyright (c) 1999-2021, Tomasz Grysztar.
|
||||||
; All rights reserved.
|
; All rights reserved.
|
||||||
;
|
;
|
||||||
; This programs is free for commercial and non-commercial use as long as
|
; 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
|
; cannot simply be copied and put under another distribution licence
|
||||||
; (including the GNU Public Licence).
|
; (including the GNU Public Licence).
|
||||||
|
|
||||||
VERSION_STRING equ "1.73.24"
|
VERSION_STRING equ "1.73.29"
|
||||||
|
|
||||||
VERSION_MAJOR = 1
|
VERSION_MAJOR = 1
|
||||||
VERSION_MINOR = 73
|
VERSION_MINOR = 73
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
|
|
||||||
; flat assembler core
|
; flat assembler core
|
||||||
; Copyright (c) 1999-2020, Tomasz Grysztar.
|
; Copyright (c) 1999-2021, Tomasz Grysztar.
|
||||||
; All rights reserved.
|
; All rights reserved.
|
||||||
|
|
||||||
simple_instruction_except64:
|
simple_instruction_except64:
|
||||||
@ -228,7 +228,9 @@ basic_instruction:
|
|||||||
mov ecx,edx
|
mov ecx,edx
|
||||||
cdq
|
cdq
|
||||||
cmp ecx,edx
|
cmp ecx,edx
|
||||||
jne value_out_of_range
|
je simm32_range_ok
|
||||||
|
call recoverable_overflow
|
||||||
|
simm32_range_ok:
|
||||||
cmp [value_type],4
|
cmp [value_type],4
|
||||||
jne get_simm32_ok
|
jne get_simm32_ok
|
||||||
mov [value_type],2
|
mov [value_type],2
|
||||||
@ -468,9 +470,7 @@ mov_instruction:
|
|||||||
jnz mov_mem_address16_al
|
jnz mov_mem_address16_al
|
||||||
test ch,44h
|
test ch,44h
|
||||||
jnz mov_mem_address32_al
|
jnz mov_mem_address32_al
|
||||||
test ch,88h
|
test ch,not 88h
|
||||||
jnz mov_mem_address64_al
|
|
||||||
or ch,ch
|
|
||||||
jnz invalid_address_size
|
jnz invalid_address_size
|
||||||
call check_mov_address64
|
call check_mov_address64
|
||||||
cmp al,0
|
cmp al,0
|
||||||
@ -504,6 +504,8 @@ mov_instruction:
|
|||||||
check_mov_address64:
|
check_mov_address64:
|
||||||
cmp [code_type],64
|
cmp [code_type],64
|
||||||
jne no_address64
|
jne no_address64
|
||||||
|
test ch,88h
|
||||||
|
jnz address64_required
|
||||||
mov eax,[address_high]
|
mov eax,[address_high]
|
||||||
or eax,eax
|
or eax,eax
|
||||||
jz no_address64
|
jz no_address64
|
||||||
@ -517,6 +519,8 @@ mov_instruction:
|
|||||||
mov al,-1
|
mov al,-1
|
||||||
ret
|
ret
|
||||||
no_address64:
|
no_address64:
|
||||||
|
test ch,08h
|
||||||
|
jnz invalid_address_size
|
||||||
xor al,al
|
xor al,al
|
||||||
ret
|
ret
|
||||||
mov_mem_address64_al:
|
mov_mem_address64_al:
|
||||||
@ -531,9 +535,7 @@ mov_instruction:
|
|||||||
jnz mov_mem_address16_ax
|
jnz mov_mem_address16_ax
|
||||||
test ch,44h
|
test ch,44h
|
||||||
jnz mov_mem_address32_ax
|
jnz mov_mem_address32_ax
|
||||||
test ch,88h
|
test ch,not 88h
|
||||||
jnz mov_mem_address64_ax
|
|
||||||
or ch,ch
|
|
||||||
jnz invalid_address_size
|
jnz invalid_address_size
|
||||||
call check_mov_address64
|
call check_mov_address64
|
||||||
cmp al,0
|
cmp al,0
|
||||||
@ -733,9 +735,7 @@ mov_instruction:
|
|||||||
jnz mov_al_mem_address16
|
jnz mov_al_mem_address16
|
||||||
test ch,44h
|
test ch,44h
|
||||||
jnz mov_al_mem_address32
|
jnz mov_al_mem_address32
|
||||||
test ch,88h
|
test ch,not 88h
|
||||||
jnz mov_al_mem_address64
|
|
||||||
or ch,ch
|
|
||||||
jnz invalid_address_size
|
jnz invalid_address_size
|
||||||
call check_mov_address64
|
call check_mov_address64
|
||||||
cmp al,0
|
cmp al,0
|
||||||
@ -764,9 +764,7 @@ mov_instruction:
|
|||||||
jnz mov_ax_mem_address16
|
jnz mov_ax_mem_address16
|
||||||
test ch,44h
|
test ch,44h
|
||||||
jnz mov_ax_mem_address32
|
jnz mov_ax_mem_address32
|
||||||
test ch,88h
|
test ch,not 88h
|
||||||
jnz mov_ax_mem_address64
|
|
||||||
or ch,ch
|
|
||||||
jnz invalid_address_size
|
jnz invalid_address_size
|
||||||
call check_mov_address64
|
call check_mov_address64
|
||||||
cmp al,0
|
cmp al,0
|
||||||
@ -3031,7 +3029,8 @@ jmp_instruction:
|
|||||||
cmp al,'('
|
cmp al,'('
|
||||||
jne invalid_operand
|
jne invalid_operand
|
||||||
mov al,[value_type]
|
mov al,[value_type]
|
||||||
push eax [symbol_identifier]
|
push eax
|
||||||
|
push [symbol_identifier]
|
||||||
cmp byte [esi],'.'
|
cmp byte [esi],'.'
|
||||||
je invalid_value
|
je invalid_value
|
||||||
mov al,[operand_size]
|
mov al,[operand_size]
|
||||||
@ -3052,7 +3051,8 @@ jmp_instruction:
|
|||||||
call mark_relocation
|
call mark_relocation
|
||||||
stos word [edi]
|
stos word [edi]
|
||||||
jmp_far_segment:
|
jmp_far_segment:
|
||||||
pop [symbol_identifier] eax
|
pop [symbol_identifier]
|
||||||
|
pop eax
|
||||||
mov [value_type],al
|
mov [value_type],al
|
||||||
pop eax
|
pop eax
|
||||||
call mark_relocation
|
call mark_relocation
|
||||||
@ -6400,7 +6400,8 @@ bndstx_instruction:
|
|||||||
cmp al,'('
|
cmp al,'('
|
||||||
jne invalid_operand
|
jne invalid_operand
|
||||||
mov al,[address_sign]
|
mov al,[address_sign]
|
||||||
push eax ebx ecx edx [address_symbol]
|
push eax ebx ecx edx
|
||||||
|
push [address_symbol]
|
||||||
call get_address_component
|
call get_address_component
|
||||||
lods byte [esi]
|
lods byte [esi]
|
||||||
cmp al,']'
|
cmp al,']'
|
||||||
@ -6410,7 +6411,8 @@ bndstx_instruction:
|
|||||||
or edx,[address_high]
|
or edx,[address_high]
|
||||||
jnz invalid_address
|
jnz invalid_address
|
||||||
mov [address_register],bh
|
mov [address_register],bh
|
||||||
pop [address_symbol] edx ecx ebx eax
|
pop [address_symbol]
|
||||||
|
pop edx ecx ebx eax
|
||||||
mov [address_sign],al
|
mov [address_sign],al
|
||||||
or bl,bl
|
or bl,bl
|
||||||
jz mib_place_index
|
jz mib_place_index
|
||||||
@ -7314,9 +7316,9 @@ store_instruction:
|
|||||||
sub eax,[current_offset]
|
sub eax,[current_offset]
|
||||||
add eax,5
|
add eax,5
|
||||||
sub edx,eax
|
sub edx,eax
|
||||||
jno @f
|
jno address_relative_ok
|
||||||
call recoverable_overflow
|
call recoverable_overflow
|
||||||
@@:
|
address_relative_ok:
|
||||||
mov al,101b
|
mov al,101b
|
||||||
mov cl,[postbyte_register]
|
mov cl,[postbyte_register]
|
||||||
shl cl,3
|
shl cl,3
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
|
|
||||||
; flat assembler source
|
; flat assembler source
|
||||||
; Copyright (c) 1999-2020, Tomasz Grysztar.
|
; Copyright (c) 1999-2021, Tomasz Grysztar.
|
||||||
; All rights reserved.
|
; All rights reserved.
|
||||||
|
|
||||||
; KolibriOS port by KolibriOS Team
|
; KolibriOS port by KolibriOS Team
|
||||||
@ -122,7 +122,7 @@ START: ; Start of execution
|
|||||||
mcall SF_SYS_MISC,SSF_MEM_ALLOC,$1000
|
mcall SF_SYS_MISC,SSF_MEM_ALLOC,$1000
|
||||||
mov [file_io_notify.flags],eax
|
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
|
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
|
invoke init_checkbox,ch1_dbg
|
||||||
|
@ -6,6 +6,8 @@ ID_OPENDLG_BTN = 5
|
|||||||
|
|
||||||
NORMAL_MODE = 8
|
NORMAL_MODE = 8
|
||||||
CONSOLE_MODE = 32
|
CONSOLE_MODE = 32
|
||||||
|
MAGIC1 = 6*(text.line_size-1)+14
|
||||||
|
MAGIC2 = (14*3+16)/3+1
|
||||||
|
|
||||||
APP_MEMORY = 0x00800000
|
APP_MEMORY = 0x00800000
|
||||||
|
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
; flat assembler
|
; flat assembler
|
||||||
; Copyright (c) 1999-2020, Tomasz Grysztar
|
; Copyright (c) 1999-2021, Tomasz Grysztar
|
||||||
; All rights reserved.
|
; All rights reserved.
|
||||||
|
|
||||||
init_memory:
|
init_memory:
|
||||||
|
|
||||||
; mov ecx, 16*1024*1024
|
; mov ecx, 16*1024*1024
|
||||||
;
|
;
|
||||||
; allocate_memory:
|
; allocate_memory:
|
||||||
mcall SF_SYSTEM, SSF_GET_FREE_RAM
|
mcall SF_SYSTEM, SSF_GET_FREE_RAM
|
||||||
@ -33,8 +33,12 @@ exit_program:
|
|||||||
cmp [_mode],NORMAL_MODE
|
cmp [_mode],NORMAL_MODE
|
||||||
jne @f
|
jne @f
|
||||||
mcall SF_SYS_MISC, SSF_MEM_FREE, [memblock]
|
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]
|
mov esp,[processing_esp]
|
||||||
jmp still
|
ret;jmp still
|
||||||
@@:
|
@@:
|
||||||
or eax,-1
|
or eax,-1
|
||||||
mcall
|
mcall
|
||||||
@ -287,7 +291,7 @@ get_environment_variable:
|
|||||||
cld
|
cld
|
||||||
rep movsb
|
rep movsb
|
||||||
.finish:
|
.finish:
|
||||||
; stc
|
; stc
|
||||||
retn
|
retn
|
||||||
|
|
||||||
alloc_handle:
|
alloc_handle:
|
||||||
@ -412,7 +416,7 @@ make_fullpaths:
|
|||||||
loopnz copy_edxpath
|
loopnz copy_edxpath
|
||||||
|
|
||||||
mov esi,path ; open
|
mov esi,path ; open
|
||||||
; DEBUGF " '%s'",esi
|
; DEBUGF " '%s'",esi
|
||||||
mov edi,fullpath_open
|
mov edi,fullpath_open
|
||||||
cld
|
cld
|
||||||
newc1:
|
newc1:
|
||||||
@ -422,10 +426,10 @@ make_fullpaths:
|
|||||||
mov esi,[esp]
|
mov esi,[esp]
|
||||||
|
|
||||||
cmp byte[esi],'/'
|
cmp byte[esi],'/'
|
||||||
je abs_path
|
je absolute_path
|
||||||
cmp byte[esi],'\'
|
cmp byte[esi],'\'
|
||||||
jne @f
|
jne @F
|
||||||
abs_path:
|
absolute_path:
|
||||||
mov edi,fullpath_open
|
mov edi,fullpath_open
|
||||||
|
|
||||||
@@:
|
@@:
|
||||||
|
@ -2,20 +2,14 @@
|
|||||||
include 'lang.inc'
|
include 'lang.inc'
|
||||||
|
|
||||||
if lang eq ru
|
if lang eq ru
|
||||||
text db ' ‚å” ©«:','‚ëå” ©«:',' <20>ãâì:'
|
|
||||||
.line_size = ($-text)/3
|
text db ' ‚å” ©«:','‚ëå” ©«:',' <20>ãâì:'
|
||||||
s_compile db 'Š®¬¯¨«.'
|
.line_size = ($-text)/3
|
||||||
s_run db ' <20>ã᪠'
|
|
||||||
s_debug db 'Žâ« ¤ª '
|
s_compile db 'Š®¬¯¨«.'
|
||||||
s_dbgdescr db '‘®§¤ ¢ âì ®â« ¤®çãî ¨ä®à¬ æ¨î',0
|
s_run db ' <20>ã᪠'
|
||||||
else
|
s_debug db 'Žâ« ¤ª '
|
||||||
text db ' InFile:','OutFile:',' Path:'
|
s_dbgdescr db '‘®§¤ ¢ âì ®â« ¤®çãî ¨ä®à¬ æ¨î',0
|
||||||
.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
|
|
||||||
|
|
||||||
sz_EPnotFound db 'Not found entry point to ',0
|
sz_EPnotFound db 'Not found entry point to ',0
|
||||||
sizeof.sz_EPnotFound = $-sz_EPnotFound
|
sizeof.sz_EPnotFound = $-sz_EPnotFound
|
||||||
@ -26,4 +20,24 @@ sizeof.sz_cantLL = $-sz_cantLL
|
|||||||
sz_system_error db 'System error: ',0
|
sz_system_error db 'System error: ',0
|
||||||
sizeof.sz_system_error = $-sz_system_error
|
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
|
||||||
|
|
||||||
|
@ -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>, <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_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,70>, 0x90FFFfff, TEXT_RDSAVE1
|
||||||
mcall SF_DRAW_TEXT, <55,86>, 0x90FFFfff, TEXT_RDSAVE2
|
mcall SF_DRAW_TEXT, <55,86>, 0x90FFFfff, TEXT_RDSAVE2
|
||||||
mcall SF_DRAW_TEXT, <WIN_W-23,5>, 0x81FFFfff, TEXT_CANCEL
|
mcall SF_DRAW_TEXT, <WIN_W-23,5>, 0x81FFFfff, TEXT_CANCEL
|
||||||
@ -167,7 +167,7 @@ draw_window:
|
|||||||
call draw_checkbox_flag
|
call draw_checkbox_flag
|
||||||
|
|
||||||
stdcall EndButton, 20, 0x4E91C5, HOME_BUTTON_ID, TEXT_KERNEL, TEXT_HOME
|
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
|
stdcall EndButton, 300, 0xC75C54, POWEROFF_BUTTON_ID, TEXT_OFF, TEXT_END
|
||||||
|
|
||||||
mcall SF_REDRAW,SSF_END_DRAW
|
mcall SF_REDRAW,SSF_END_DRAW
|
||||||
@ -178,7 +178,7 @@ proc EndButton x, bgcol, id, but_text, hotkey_text
|
|||||||
BUTW = 116
|
BUTW = 116
|
||||||
mov ebx,[x]
|
mov ebx,[x]
|
||||||
sub ebx,3
|
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]
|
mcall SF_DEFINE_BUTTON, <[x],BUTW>, <BUTY,43-1>, [id], [bgcol]
|
||||||
; -strlen(but_text)*8 + BUTW / 2 + x, BUTY+8
|
; -strlen(but_text)*8 + BUTW / 2 + x, BUTY+8
|
||||||
stdcall string.length, [but_text]
|
stdcall string.length, [but_text]
|
||||||
|
Loading…
Reference in New Issue
Block a user