fasm: dynamic memory allocation

git-svn-id: svn://kolibrios.org@635 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Evgeny Grechnikov (Diamond) 2007-09-20 17:07:33 +00:00
parent 51662272ac
commit 01d88ae246
2 changed files with 25 additions and 7 deletions

View File

@ -27,8 +27,8 @@ use32
dd 0x01 ; header version
dd START ; program start
dd program_end ; program image size
dd APP_MEMORY ; required amount of memory
dd 0xDFFF0 ; stack
dd stacktop ; required amount of memory
dd stacktop ; stack
dd params,0x0 ; parameters,icon
include 'lang.inc'
@ -593,3 +593,7 @@ max_handles = 8
fileinfos rb (4+20+MAX_PATH)*max_handles
fileinfos_end:
pinfo process_information
align 1000h
rb 1000h
stacktop:

View File

@ -58,15 +58,29 @@ filepos dd 0x0
; ~3/8 - additional memory
; ~5/8 - main memory
init_memory:
mov [memory_start],0x100000
mov [memory_end],0x100000+(APP_MEMORY-0x100000)/8*5
mov [additional_memory],0x100000+(APP_MEMORY-0x100000)/8*5
mov [additional_memory_end],APP_MEMORY
mcall 18, 16
cmp eax, 0xFFFFFFFF shr 9
jbe @f
mov eax, 0xFFFFFFFF shr 9
@@:
shl eax, 9
lea ecx, [eax+stacktop]
mcall 64, 1
mov [memory_start], stacktop
mov [additional_memory_end], ecx
sub ecx, stacktop
shr ecx, 3
lea ecx, [ecx*5+stacktop]
mov [memory_end],ecx
mov [additional_memory],ecx
ret
exit_program:
cmp [_mode],NORMAL_MODE
je still
jne @f
mcall 64, 1, stacktop
jmp still
@@:
or eax,-1
mcall