/programs/develop/fasm/trunk/assemble.inc |
---|
31,6 → 31,7 |
mov [format_flags],eax |
mov [number_of_relocations],eax |
mov [undefined_data_end],eax |
mov [file_extension],eax |
mov [next_pass_needed],al |
mov [output_format],al |
mov [labels_type],al |
/programs/develop/fasm/trunk/expressi.inc |
---|
1992,6 → 1992,8 |
mov [address_symbol],eax |
mov al,[edi+12] |
mov [value_type],al |
cmp al,6 |
je plt_address |
cmp al,5 |
je gotoff_address |
ja invalid_use_of_symbol |
2002,6 → 2004,7 |
shl al,5 |
jmp address_symbol_ok |
gotoff_address: |
plt_address: |
mov al,40h |
address_symbol_ok: |
mov ah,[address_size] |
/programs/develop/fasm/trunk/formats.inc |
---|
33,6 → 33,8 |
lea eax,[edi+9] |
cmp eax,[structures_buffer] |
jae out_of_memory |
cmp [file_extension],0 |
jne extension_specified |
cmp [output_format],2 |
je exe_extension |
jb bin_extension |
93,6 → 95,18 |
inc edi |
cmp byte [edi],0 |
jne adapt_case |
jmp extension_ok |
extension_specified: |
mov al,'.' |
stos byte [edi] |
mov esi,[file_extension] |
copy_extension: |
lods byte [esi] |
stos byte [edi] |
test al,al |
jnz copy_extension |
dec edi |
extension_ok: |
mov esi,edi |
lea ecx,[esi+1] |
sub ecx,[free_additional_memory] |
178,6 → 192,15 |
je format_coff |
cmp al,5 |
je format_elf |
format_defined: |
cmp byte [esi],86h |
jne instruction_assembled |
cmp word [esi+1],'(' |
jne invalid_argument |
mov eax,[esi+3] |
add esi,3+4 |
mov [file_extension],esi |
lea esi,[esi+eax+1] |
jmp instruction_assembled |
format_prefix: |
lods byte [esi] |
377,7 → 400,7 |
mov word [edx+0Ch],0FFFFh |
mov word [edx+10h],1000h |
mov [code_type],16 |
jmp instruction_assembled |
jmp format_defined |
mark_mz_relocation: |
push eax ebx |
inc [number_of_relocations] |
1023,7 → 1046,7 |
jnc wdm_flag_ok |
or word [edx+5Eh],2000h |
wdm_flag_ok: |
jmp instruction_assembled |
jmp format_defined |
pe_section: |
call close_pe_section |
bts [format_flags],5 |
1348,17 → 1371,17 |
cmp edx,[ecx+64h] |
ja value_out_of_range |
jb instruction_assembled |
cmp eax,[edx+60h] |
cmp eax,[ecx+60h] |
ja value_out_of_range |
jmp instruction_assembled |
default_pe64_stack_commit: |
mov dword [edx+68h],1000h |
cmp dword [edx+64h],0 |
mov dword [ecx+68h],1000h |
cmp dword [ecx+64h],0 |
jne instruction_assembled |
mov eax,[edx+60h] |
mov eax,[ecx+60h] |
cmp eax,1000h |
ja instruction_assembled |
mov dword [edx+68h],eax |
mov dword [ecx+68h],eax |
jmp instruction_assembled |
pe_heap: |
lods byte [esi] |
1494,11 → 1517,12 |
store_fixup: |
jecxz fixups_done |
add dword [ebx],2 |
mov eax,[esi] |
and ax,0FFFh |
mov dl,[esi+4] |
shl dx,12 |
or ax,dx |
mov ah,[esi+1] |
and ah,0Fh |
mov al,[esi+4] |
shl al,4 |
or ah,al |
mov al,[esi] |
stos word [edi] |
add esi,5 |
loop make_fixups |
2174,10 → 2198,10 |
mov [labels_type],2 |
mov [code_type],32 |
test [format_flags],8 |
jz instruction_assembled |
jz format_defined |
mov [labels_type],4 |
mov [code_type],64 |
jmp instruction_assembled |
jmp format_defined |
coff_section: |
call close_coff_section |
mov ebx,[free_additional_memory] |
2774,9 → 2798,9 |
mov al,4 |
mov [ebx+10h],eax |
test [format_flags],8 |
jz instruction_assembled |
jz format_defined |
mov byte [ebx+10h],8 |
jmp instruction_assembled |
jmp format_defined |
format_elf64: |
mov edx,edi |
mov ecx,40h shr 2 |
3513,7 → 3537,7 |
mov [org_registers],0 |
mov [org_start],edi |
mov [symbols_stream],edi |
jmp instruction_assembled |
jmp format_defined |
format_elf64_exe: |
add esi,2 |
or [format_flags],1 |
3573,7 → 3597,7 |
mov [org_registers],0 |
mov [org_start],edi |
mov [symbols_stream],edi |
jmp instruction_assembled |
jmp format_defined |
elf_entry: |
lods byte [esi] |
cmp al,'(' |
/programs/develop/fasm/trunk/parser.inc |
---|
159,10 → 159,10 |
blocks_stack_ok: |
xor al,al |
stos byte [edi] |
mov eax,[error_line] |
mov [current_line],eax |
cmp [anonymous_forward],0 |
jne invalid_value |
;mov eax,[error_line] |
;mov [current_line],eax |
;cmp [anonymous_forward],0 |
;jne invalid_value |
add edi,0Fh |
and edi,not 0Fh |
mov [code_start],edi |
1163,10 → 1163,10 |
xor ebx,ebx |
ret |
anonymous_back: |
add esi,2 |
mov eax,[anonymous_reverse] |
or eax,eax |
jz invalid_value |
jz new_anonymous |
add esi,2 |
jmp anonymous_ok |
new_anonymous: |
add esi,2 |
/programs/develop/fasm/trunk/variable.inc |
---|
88,6 → 88,7 |
blocks_stack dd ? |
parsed_lines dd ? |
logical_value_parentheses dd ? |
file_extension dd ? |
next_pass_needed db ? |
macro_status db ? |
/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.21" |
VERSION_STRING equ "1.67.22" |
VERSION_MAJOR = 1 |
VERSION_MINOR = 67 |
/programs/develop/fasm/trunk/x86_64.inc |
---|
5775,6 → 5775,8 |
mov [extended_code],78h |
lods byte [esi] |
call get_size_operator |
cmp al,10h |
je vmread_nomem |
cmp al,'[' |
jne invalid_operand |
call get_address |
5781,6 → 5783,8 |
lods byte [esi] |
cmp al,',' |
jne invalid_operand |
call vmread_check_size |
mov [operand_size],0 |
lods byte [esi] |
call get_size_operator |
cmp al,10h |
5788,16 → 5792,41 |
lods byte [esi] |
call convert_register |
mov [postbyte_register],al |
cmp [operand_size],4 |
jne invalid_operand_size |
jmp vmx_size_ok |
vmread_nomem: |
lods byte [esi] |
call convert_register |
push eax |
call vmread_check_size |
lods byte [esi] |
cmp al,',' |
jne invalid_operand |
mov [operand_size],0 |
lods byte [esi] |
call get_size_operator |
cmp al,10h |
jne invalid_operand |
lods byte [esi] |
call convert_register |
mov [postbyte_register],al |
cmp [operand_size],4 |
jne invalid_operand_size |
pop ebx |
mov [base_code],0Fh |
call store_nomem_instruction |
jmp instruction_assembled |
vmread_check_size: |
cmp [code_type],64 |
je vmread_long |
cmp [operand_size],4 |
je vmx_size_ok |
jmp invalid_operand_size |
jne invalid_operand_size |
ret |
vmread_long: |
cmp [operand_size],8 |
je vmx_size_ok |
jmp invalid_operand_size |
jne invalid_operand_size |
ret |
vmwrite_instruction: |
mov [extended_code],79h |
lods byte [esi] |
5807,15 → 5836,28 |
lods byte [esi] |
call convert_register |
mov [postbyte_register],al |
cmp [operand_size],4 |
jne invalid_operand_size |
mov [operand_size],0 |
lods byte [esi] |
cmp al,',' |
jne invalid_operand |
lods byte [esi] |
call get_size_operator |
cmp al,10h |
je vmwrite_nomem |
cmp al,'[' |
jne invalid_operand |
call get_address |
jmp vmread_check_size |
call vmread_check_size |
jmp vmx_size_ok |
vmwrite_nomem: |
lods byte [esi] |
call convert_register |
mov bl,al |
mov [base_code],0Fh |
call store_nomem_instruction |
jmp instruction_assembled |
simple_svm_instruction: |
push eax |
mov [base_code],0Fh |