Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 370 → Rev 369

/programs/develop/fasm/trunk/formats.inc
1418,13 → 1418,13
jmp instruction_assembled
mark_pe_relocation:
push eax ebx
mov al,2
test [format_flags],8
jz check_pe32_relocation_type
cmp [value_type],4
jz check_pe_relocation_type
mov al,4
check_pe_relocation_type:
cmp [value_type],al
je pe_relocation_type_ok
check_pe32_relocation_type:
cmp [value_type],2
je pe_relocation_type_ok
cmp [error_line],0
jne pe_relocation_type_ok
mov eax,[current_line]
1438,18 → 1438,11
mov ebx,[free_additional_memory]
inc [number_of_relocations]
jz invalid_use_of_symbol
add ebx,5
mov [ebx],eax
add ebx,4
cmp ebx,[structures_buffer]
jae out_of_memory
mov [free_additional_memory],ebx
mov [ebx-5],eax
cmp [value_type],2
je fixup_32bit
mov byte [ebx-1],0Ah
jmp fixup_ok
fixup_32bit:
mov byte [ebx-1],3
fixup_ok:
pop ebx eax
ret
generate_pe_data:
1458,53 → 1451,6
cmp al,5
je make_pe_fixups
ret
make_pe_fixups:
bts [resolver_flags],0
jc pe_relocatable_ok
or [next_pass_needed],-1
pe_relocatable_ok:
push esi
mov ecx,[number_of_relocations]
mov esi,[free_additional_memory]
lea eax,[ecx*5]
sub esi,eax
mov [free_additional_memory],esi
or [number_of_relocations],-1
xor edx,edx
mov ebp,edi
make_fixups:
cmp [esi],edx
jb store_fixup
mov eax,edi
sub eax,ebp
test eax,11b
jz fixups_block
xor ax,ax
stos word [edi]
add dword [ebx],2
fixups_block:
mov eax,edx
add edx,1000h
cmp [esi],edx
jae fixups_block
stos dword [edi]
mov ebx,edi
mov eax,8
stos dword [edi]
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
stos word [edi]
add esi,5
loop make_fixups
fixups_done:
pop esi
ret
make_pe_resource:
cmp byte [esi],82h
jne resource_done
2071,6 → 2017,58
mov [resource_size],eax
resource_done:
ret
make_pe_fixups:
bts [resolver_flags],0
jc pe_relocatable_ok
or [next_pass_needed],-1
pe_relocatable_ok:
push esi
mov ecx,[number_of_relocations]
mov esi,[free_additional_memory]
mov eax,ecx
shl eax,2
sub esi,eax
mov [free_additional_memory],esi
or [number_of_relocations],-1
xor edx,edx
mov ebp,edi
make_fixups:
cmp [esi],edx
jb store_fixup
mov eax,edi
sub eax,ebp
test eax,11b
jz fixups_block
xor ax,ax
stos word [edi]
add dword [ebx],2
fixups_block:
mov eax,edx
add edx,1000h
cmp [esi],edx
jae fixups_block
stos dword [edi]
mov ebx,edi
mov eax,8
stos dword [edi]
store_fixup:
jecxz fixups_done
add dword [ebx],2
mov eax,[esi]
and ax,0FFFh
test [format_flags],8
jnz fixup_64bit
or ax,3000h
jmp fixup_ok
fixup_64bit:
or ax,0A000h
fixup_ok:
stos word [edi]
add esi,4
loop make_fixups
fixups_done:
pop esi
ret
close_pe:
call close_pe_section
mov edx,[code_start]
/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.20"
 
VERSION_MAJOR = 1
VERSION_MINOR = 67
/programs/develop/fasm/trunk/x86_64.inc
1402,7 → 1402,6
cmp al,70h
jae invalid_operand
sub al,61h
jc invalid_operand
cmp al,4
jae push_sreg_386
shl al,3
1682,7 → 1681,6
cmp al,70h
jae invalid_operand
sub al,61h
jc invalid_operand
cmp al,4
jae pop_sreg_386
shl al,3
/programs/develop/fasm/trunk/fasm.asm
12,6 → 12,10
CONSOLE_MODE = 32
 
MAGIC1 = 6*(text.line_size-1)+14
MAGIC2 = 14
MAGIC3 = 1
MAGIC4 = 7
OUTPUTXY = 7 shl 16 + 53
MAX_PATH = 100
 
APP_MEMORY = 0x00800000
160,21 → 164,21
sub ebx,10
 
push ecx
madd ecx, 14*3+2, 14*3+2
madd ecx,MAGIC2*3+2,MAGIC2*3+2
mcall 38,,,[sc.work_graph]
pop ecx
 
sub ebx,MAGIC1+3
mcall
madd ecx, 14, 14
madd ecx,MAGIC2,MAGIC2
mcall
madd ecx, 14, 14
madd ecx,MAGIC2,MAGIC2
mcall
madd ecx, 14, 14
madd ecx,MAGIC2,MAGIC2
mcall
push ebx
mpack ebx,MAGIC1,MAGIC1
sub ecx, 14*3
sub ecx,MAGIC2*3
mcall
mov ebx,[esp-2]
pop bx
182,23 → 186,23
add esp,2
 
mpack ebx,0,MAGIC1-1
mpack ecx,1+1, 14-2
mpack ecx,MAGIC3+1,MAGIC2-2
mcall 8,,,0x4000000B ; Button: Enter Infile
madd ecx, 14,0
madd ecx,MAGIC2,0
mcall ,,,0x4000000C ; Button: Enter Outfile
madd ecx, 14,0
madd ecx,MAGIC2,0
mcall ,,,0x4000000D ; Button: Enter Path
 
mpack ebx,[pinfo.x_size],MAGIC1
msub ebx,MAGIC1+10+1,0
mpack ecx,0, 14*3/2-1
madd ecx,1,0
mpack ecx,0,MAGIC2*3/2-1
madd ecx,MAGIC3,0
mcall ,,,0x00000002,[sc.work_button]
madd ecx, 14*3/2+1,0
madd ecx,MAGIC2*3/2+1,0
mcall ,,,0x00000003
 
mpack ebx,6,0 ; Draw Window Text
add ebx,1+ 14/2-3
add ebx,MAGIC3+MAGIC2/2-3
mov ecx,[sc.work_text]
mov edx,text
mov esi,text.line_size
205,7 → 209,7
mov eax,4
newline:
int 0x40
add ebx, 14
add ebx,MAGIC2
add edx,text.line_size
cmp byte[edx],'x'
jne newline
213,13 → 217,13
mov ebx,[pinfo.x_size]
sub ebx,MAGIC1+10+1-9
shl ebx,16
add ebx,1+( 14*3/2-1)/2-3
add ebx,MAGIC3+(MAGIC2*3/2-1)/2-3
mcall ,,[sc.work_button_text],s_compile,7
add ebx,14*3/2+1
add ebx,MAGIC2*3/2+1
mcall ,,,s_run
 
mpack ebx,MAGIC1+6,0
add ebx,1+ 14/2-3+ 14*0
add ebx,MAGIC3+MAGIC2/2-3+MAGIC2*0
mov esi,[pinfo.x_size]
sub esi,MAGIC1*2+5*2+6+3
mov eax,esi
230,9 → 234,9
mov al,MAX_PATH
@@: movzx esi,al
mcall 4,,[sc.work_text],infile
add ebx,14
add ebx,MAGIC2
mcall ,,,outfile
add ebx,14
add ebx,MAGIC2
mcall ,,,path
 
call draw_messages
246,14 → 250,14
 
draw_messages:
mov eax,13 ; clear work area
mpack ebx,7-2,[pinfo.x_size]
sub ebx,5*2+7*2-1-2*2
mpack ebx,MAGIC4-2,[pinfo.x_size]
sub ebx,5*2+MAGIC4*2-1-2*2
mpack ecx,0,[pinfo.y_size]
madd ecx, 14*3+1+7+1,-( 14*3+1+7*2+25)
madd ecx,MAGIC2*3+MAGIC3+MAGIC4+1,-(MAGIC2*3+MAGIC3+MAGIC4*2+25)
mov word[bottom_right+2],bx
mov word[bottom_right],cx
msub [bottom_right],7,11
add [bottom_right],7 shl 16 + 53
add [bottom_right],OUTPUTXY
mov edx,[sc.work]
int 0x40
_cy = 0
261,7 → 265,7
_cx = 4
_sx = 6
push ebx ecx
mpack ebx,4,5
mpack ebx,MAGIC4-3,MAGIC4-2
add bx,[esp+_cx]
mov ecx,[esp+_sy-2]
mov cx,[esp+_sy]
273,7 → 277,7
add ecx,esi
madd ecx,1,1
mcall
mpack ebx,4,4
mpack ebx,MAGIC4-3,MAGIC4-3
mov esi,[esp+_sy-2]
mov si,cx
mov ecx,esi
290,13 → 294,13
; read string
 
f1: mov [addr],infile
add [ya], 14*0
add [ya],MAGIC2*0
jmp rk
f2: mov [addr],outfile
add [ya], 14*1
add [ya],MAGIC2*1
jmp rk
f3: mov [addr],path
add [ya], 14*2
add [ya],MAGIC2*2
rk:
 
mov edi,[addr]
361,7 → 365,7
print_text:
 
mpack ebx,MAGIC1+6,[pinfo.x_size]
sub ebx,MAGIC1*2+19
sub ebx,MAGIC1*2+5*2+6+3
movzx esi,bx
mov ecx,[ya-2]
mov cx,8
427,7 → 431,7
call draw_messages
push 0
pop [textxy]
add [textxy],7 shl 16 + 53
add [textxy],OUTPUTXY
@@:
mov esi,_logo
call display_string
493,6 → 497,7
 
 
include 'system.inc'
 
include 'version.inc'
include 'errors.inc'
include 'expressi.inc'
/programs/develop/fasm/trunk/system.inc
324,7 → 324,7
cmp dl,0xa
jnz dc1
and [textxy],0x0000FFFF
add [textxy], 7 shl 16 +53 and 0xFFFF0000 + 10
add [textxy],OUTPUTXY and 0xFFFF0000 + 10
dc2:
popa
ret
398,7 → 398,7
display_user_messages:
; push [skinh]
; pop [textxy]
; add [textxy], 7 shl 16 +53
; add [textxy],OUTPUTXY
mov [displayed_count],0
call flush_display_buffer
cmp [displayed_count],1